rsync學習

jopen 10年前發布 | 12K 次閱讀 rsync Linux

一、示例

以下面兩個目錄為例子
src目錄結構
?  tree src
src
└── demo.py
dest目錄結構
?  tree dest 
dest
└── hello.py
1. 文件同步
?  rsync -v src/demo.py dest
demo.py
sent 85 bytes  received 35 bytes  240.00 bytes/sec
total size is 0  speedup is 0.00
2. 目錄同步
?  rsync -av src/  dest
sending incremental file list
./
demo.py
sent 118 bytes  received 38 bytes  312.00 bytes/sec
total size is 0  speedup is 0.00
3. 遠程目錄同步
?  rsync -av src/  wyq@localhost:~/dest
wyq@localhost's password: 
sending incremental file list
./
demo.py
sent 118 bytes  received 38 bytes  34.67 bytes/sec
total size is 0  speedup is 0.00

二、介紹

    rsync(remote sync)遠程同步工具. 使用rsync算法,只傳送兩個文件不同的部分, 而不是每次都整份傳送,因此速度相當快. 運行Rsync服務器的機器也叫備份服務,一個Rsync服務器可同時備份多個客戶端的數據; 也可以多個Rsync服務器備份一個客戶端的數據。
    rsync服務器打開873端口, 等待對方Rsync連接。連接時,Rsync server會檢查口令是否相符,若通過口令查核,則可以開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,下一次就只傳送二個文件之間不同的部份。
    rsync支持大多數linux系統,windows也有相應版本,比較知名的有cwRsync和Sync2NAS。

三、基本特點

1.可以鏡像保存整個目錄樹和文件系統;
2.可以很容易做到保持原來文件的權限、時間、軟硬鏈接等;
3.無須特殊權限即可安裝;
4.優化的流程,文件傳輸效率高;
5.可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接;
6.支持匿名傳輸。

四、語法

本地:  rsync [OPTION...] SRC... [DEST]
Access via remote shell(ssh)
  獲取: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  推送: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:(rsync服務器)
  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
* ":"   分隔符就啟動這種模式
* "::"  分隔符啟動daemon模式
* 傳輸方式有兩種:rsync-daemon、ssh. daemon方式缺乏靈活性;ssh方式,靈活,速度快,安全性高,但是cpu消耗高.一般用ssh.

五、選項

一般都使用azv選項
-v, --verbose 詳細模式
-a, archive  歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性
-r, --recursive 對子目錄以遞歸方式處理
-z, --compress 傳輸時對數據進行壓縮
-b, --backup 創建備份,存在同名文件,將老的重新命名為~filename. 可以使用--suffix指定不同的備份文件前綴.
-l, --links 保留軟鏈接
-L, --copy-links  像對待常規文件一樣處理軟鏈接
-e, --rsh=COMMAND 指定使用rsh, ssh方式進行數據同步
--force 強制刪除目錄,即使不為空
-u, --update  僅僅進行更新,也就是跳過所有已經存在于DST,并且文件時間晚于要備份的文件。(不覆蓋更新的文件)
--size-only 當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間
-I, --ignore-times 不跳過那些有同樣的時間和長度的文件
-t, --time  保持文件時間信息
-o, --owner 保持文件屬主信息
-p, --perms 保持文件權限
-g, --group 保持文件屬組信息
-q, --quiet 精簡輸出模式
-c, --checksum 打開校驗模式,強制對文件傳輸進行校驗
--progress 顯示數據鏡像同步的過程
--delete   以rsync服務器端為基礎進行數據鏡像同步,保持與rsync服務器目錄完全一致.
--delete-excluded  同樣刪除接收端那些被該選項指定排除的文件
--delete-after 傳輸結束以后再刪除
--exclude=PATTERN  排除不需要傳輸的文件類型
--partial  保留因故沒有完全傳輸的文件,以加快隨后的再次傳輸
--port=PORT 指定其它rsync服務器端口
--password-file=FILE 從FILE中得到密碼
--bwlimit=KBPS 限制I/O帶寬,KBytes per second

六、優點與缺點

優點
安全、備份迅速、增量備份,可以解決實時性要求不高的需求.
缺點
    rsync需要掃描所有文件后進行對比,然后進行查量傳輸,如果文件很大,掃描文件非常耗時,而且發生變化的文件往往是很少一部分,因此比較低效.
    rsync不能實時監測,兩次觸發動作會有時間差,導致服務器和客戶端數據出現不一致。
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!