rsync簡單總結

rsync
是一個遠程數據同步工具,算法是同步文件差別部分,所以針對非第一次同步傳輸速度快 (首次備份,沒有複製優點)
rsync做者:Andrew Tridgell 和 Paul Mackerrashtml

rsync特性:
一、能夠鏡像保存整個目錄和文件系統
二、容易作到保持原來文件的權限、時間、軟硬連接等
三、無特殊權限就能夠安裝,linux操做系統默認安裝
四、優化的流程、文件傳輸效率高
五、可使用rsh ssh 方式來傳輸文件 也可直接經過socket方式
六、支持匿名傳輸
七、rsync 進行遠程同步時,可使用兩種方式:遠程Shell方式(建議使用 ssh用戶驗證由 ssh 負責)和C/S方式(即客戶鏈接遠程rsync 服務器,用戶驗證由rsync 服務器負責)linux

備份兩種狀況:
一、需保留備份歷史歸檔:在備份時保留歷史的備份歸檔,是爲了在系統出現錯誤後能恢復到從前正確的狀態。這可使用徹底備份和增量備份來完成。可使用 tar 命令保存歸檔文件。爲了提升備份效率,也可使用 rsync 結合 tar 來完成。
二、無需保留備份歷史歸檔:若無需從歷史備份恢復到正確狀態,則只備份系統最新文件狀態便可。這能夠簡單地使用 rsync 同步來完成。此時一般稱爲鏡像。
鏡像能夠分爲兩種:
被鏡像的目錄在各個主機上保持相同的位置。此時通常是爲了實施負載均衡而對多個主機進行同步鏡像。例如:將主機 A 的 /srv/www 目錄同步到主機 B 的 /srv/www 目錄等。
被鏡像的目錄在各個主機上不保持相同的位置。例如:主機 A 和主機 B 都運行着各自的業務,同時又互爲鏡像備份。此時主機 A 的 /srv/www 目錄同步到主機 B 的 /backups/hosta/www 目錄;主機 B 的 /srv/www 目錄同步到主機 A 的 /backups/hostb/www 目錄等。
說明:
若使用普通身份執行rsync,同步後的文件的屬主將改變爲這個普通用戶身份
使用超級用戶身份運行rsync命令,同步後的文件的屬主將保持原來的用戶身份算法

rsync使用格式
本機使用shell

rsync [option...] src...  [dest]...

遠程shell備份
備份到本機vim

rsync [option...] [user@]host:src(遠程文件路徑)... [dest](本機備份路徑)...
eg:
rsync root@192.168.217.11:/root/test.sh ./

備份到遠程機器bash

rsync [option...] src(本地文件路徑)... [user@]host:[dest](遠程主機備份路徑)...
eg:
rsync ./testbak.sh root@192.168.217.11:/root/

訪問rsync服務器備份:服務器

備份到本機: rsync [option...] [user@]host::src... [dest]...
備份到遠程機器: rsync [option...] src... [user@]host::[dest]

備份到本機: rsync [option...] rsync://[user@]host[:port]/src... [dest]...
備份到遠程機器: rsync [option...] src... rsync://[user@]host[:port]/[dest]

備註:
一、若是不指定[dest] rsync只列出須要備份的文件(列出格式相似於ls -la)
二、遠程shell同步時,主機名與資源之間使用單個冒號「:」做爲分隔符
三、rsync服務器同步時,主機名與資源之間使用兩個冒號「::」做爲分隔符負載均衡

option參數說明ssh

-a  --archive:歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性
-r  ––recursive:對子目錄以遞歸模式處理  
-l  ––links:保持符號連接文件 
-H  ––hard-links:保持硬連接文件
-p  ––perms:保持文件權限
-t  ––times:保持文件時間信息 
-g  ––group:保持文件屬組信息 
-o  ––owner:保持文件屬主信息 (super-user only)  
-D:保持設備文件和特殊文件 (super-user only)  
-z  --compress:在傳輸文件時進行壓縮處理
--exclude=pattern:指定排除一個不須要傳輸的文件匹配模式
--exclude-from=file:從file中讀取排除規則  
--include=file:指定須要傳輸的文件匹配模式
--include-from=file:從file中讀取包含規則
--copy-unsafe-links:拷貝指向SRC路徑目錄樹之外的連接文件
--safe-links:忽略指向SRC路徑目錄樹之外的連接文件(默認)
--exsiting:僅僅更新那些已經存在於接收端的文件,而不備份那些新建立的文件 
--ignore-existing:忽略那些已經存在於接收端的文件,僅備份那些新建立的文件
-b  --backup:當有變化時,對目標目錄中的舊版文件進行備份
--backup-dir=dir:與 -b 結合使用,將備份的文件存到 DIR 目錄中  
--link-dest=dir:當文件未改變時基於DIR建立硬連接文件
––delete:刪除那些接收端還有而發送端已經不存在的文件  
––delete-before:接收者在傳輸以前進行刪除操做 (默認)  
––delete-during:接收者在傳輸過程當中進行刪除操做  
––delete-after:接收者在傳輸以後進行刪除操做  
––delete-excluded:在接收方同時刪除被排除的文件  
-e  ––rsh=COMMAND:指定替代 rsh 的 shell 程序  
––ignore-errors 即便出現 I/O 錯誤也進行刪除  
––partial:保留那些因故沒有徹底傳輸的文件,以是加快隨後的再次傳輸  
––progress:在傳輸時顯示傳輸過程  
-P:等價於 ––partial ––progress  
––delay-updates:將正在更新的文件先保存到一個臨時目錄(默認爲 「.~tmp~」),待傳輸完畢再更新目標文件  
-v  ––verbose:詳細輸出模式  
-q  ––quiet:精簡輸出模式  
-h  ––human-readable:輸出文件大小使用易讀的單位(如,K,M等)  
-n  ––dry-run:顯示哪些文件將被傳輸  
––list-only:僅僅列出文件而不進行復制  
––rsyncpath=PROGRAM:指定遠程服務器上的 rsync 命令所在路徑  
––password-file=FILE:從 FILE 中讀取口令,以免在終端上輸入口令,一般在 cron 中鏈接 rsync 服務器時使用  
-4  ––ipv4:使用 IPv4  
-6  ––ipv6:使用 IPv6  
––version:打印版本信息  
––help:顯示幫助信息

特別強調使用socket

--exclude=pattern,指定排除一個不須要傳輸的文件匹配模式

rsync 命令將192.168.217.11主機上的/www目錄(不包含/www/logs和/www/conf子目錄)複製到本地的/backup/www/

rsync -vzrtopg --delete --exclude "logs/" --exclude "conf/" --progress backup@192.168.217.11:/www/ /backup/www/

rsync命令僅複製目錄結構而忽略掉目錄中的文件

rsync -av --include '*/' --exclude '*' backup@192.168.0.101:/www/ /backup/www-tree/

備註:
一、選項 ––include和 ––exclude都不能使用間隔符。例如:
--exclude "logs/" --exclude "conf/"
不能寫成
--exclude "logs/ conf/"

二、備份時目錄後是否有"/"說明:
將192.168.217.11的root目錄下備份全部文件到當前目錄下

rsync -avpz --delete root@192.168.217.11:/root ./ 

將192.168.217.11的root目錄下因此文件且包含root目錄,備份到當前目錄下

rsync -avpz --delete root@192.168.217.11:/root/ ./ 

當 include/exclude 的規則較複雜時,能夠將規則寫入規則文件。使用規則文件能夠靈活地選擇傳輸哪些文件(include)以及忽略哪些文件(exclude)。

一、若文件/目錄在剔除列表中,則忽略傳輸
二、若文件/目錄在包含列表中,則傳輸之
三、若文件/目錄未被說起,也傳輸之
四、在 rsync 的命令行中使用 ––exclude-from=FILE 或 ––include-from=FILE 讀取規則文件。
五、規則文件 FILE 的書寫約定:

每行書寫一條規則 RULE
以 # 或 ; 開始的行爲註釋行
包含(include)和排除(exclude)規則的語法以下:
include PATTERN 或簡寫爲 + PATTERN
exclude PATTERN 或簡寫爲 - PATTERN

PATTERN 的書寫規則以下:
以 / 開頭:匹配被傳輸的跟路徑上的文件或目錄
以 / 結尾:匹配目錄而非普通文件、連接文件或設備文件
使用通配符
*:匹配非空目錄或文件(遇到 / 截止)
**:匹配任何路徑(包含 / )
?:匹配除了 / 的任意單個字符
[:匹配字符集中的任意一個字符,如 [a-z] 或 [[:alpha:]]
可使用轉義字符 \ 將上述通配符還原爲字符自己含義
下面給出幾個使用規則的例子:

eg1:

# 不傳輸全部後綴爲 .o 的文件
- *.o
# 不傳輸傳輸根目錄下名爲 foo 的文件或目錄
- /foo
# 不傳輸名爲 foo 的目錄
- foo/
# 不傳輸 /foo 目錄下的名爲 bar 的文件或目錄
- /foo/bar  

eg2:

# 傳輸全部目錄和C語言源文件並禁止傳輸其餘文件
+ */
+ *.c
- *  

eg3:

# 僅傳輸 foo 目錄和其下的 bar.c 文件
+ foo/
+ foo/bar.c
- *

將規則寫入規則文件以後,使用示例:
首先將下面的規則存入名爲www-rsync-rules.txt的文件
vim www-rsync-rules.txt

# 不傳輸 logs 目錄
- logs/
# 不傳輸後綴爲 .tmp 的文件
- *.tmp
# 傳輸 Apache 虛擬主機文檔目錄(/*/ 匹配域名)
+ /srv/www/
+ /srv/www/*/
+ /srv/www/*/htdocs/
+ /srv/www/*/htdocs/**
# 傳輸每一個用戶的 public_html 目錄(/*/ 匹配用戶名)
+ /home/
+ /home/*/
+ /home/*/public_html/
+ /home/*/public_html/**
# 禁止傳輸其餘
- *

而後便可使用相似以下的 rsync 命令:

rsync -av --delete --exclude-from=www-rsync-rules.txt / remotehost:/dest/dir

-e參數說明

使用基於ssh的rsync同步數據可使用 -e ssh 參數,CentOS默認指定使用ssh做爲遠程Shell。若在其餘系統上執行rsync 命令,爲確保使用ssh做爲遠程 Shell,請添加 -e ssh 參數。
指定ssh端口進行rsync
rsync -rvz -e 'ssh -p port' --progress --remove-sent-files ./localpath root@remotehost:remotepath
eg:指定ssh端口爲2203進行rsync

rsync -rvz -e 'ssh -p 2203' --progress --remove-sent-files hadoop@192.168.217.11:/home/hadoop_ftp/test_all/test /home/wangchengliang
相關文章
相關標籤/搜索