rsync學習小結

    rsync是被廣泛使用的數據同步工具,因其使用delta-transfer算法,只傳輸源文件和目標文件之間有差異的部分,可大大減小網絡傳輸的數據量,提高同步效率。廢話不多說,開始做相關小結。

1.使用方法

    共有七種使用方法,適用於本地複製數據、從本地同步數據到遠程、從遠程同步數據到本地三種情況,但不能實現數據從遠程到遠程流動。

    該工具可以使用rsync進程和遠程shell兩種訪問方式,結合上述三種傳輸方向,七種使用方法如下所示:

本地複製:

    rsync [OPTION...] SRC... [DEST]


從遠程拉數據:

通過remote shell

    rsync [OPTION...] [USER@]HOST:SRC... [DEST]

通過rsync daemon

    rsync [OPTION...] [USER@]HOST::SRC... [DEST]

    rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]


推數據到遠程:

通過remote shell

    rsync [OPTION...] SRC... [USER@]HOST:DEST

通過rsync daemon

    rsync [OPTION...] SRC... [USER@]HOST::DEST

    rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

        當遠程路徑使用雙冒號“::”或 rsync://格式時,遠程主機需開啓rsync daemon;使用單冒號“:”格式時,則使用remote shell,默認使用SSH認證。


以下爲常用選項:

-v, --verbose 詳細模式輸出

-q, --quiet 精簡輸出模式

-c, --checksum 打開校驗開關,強制對文件傳輸進行校驗

-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD

-r, --recursive 對子目錄以遞歸模式處理

-R, --relative 使用相對路徑信息

-b, --backup 創建備份,也就是對於目的已經存在有同樣的文件名時,將老的文件重新命名爲~filename。可以使用--suffix選項來指定不同的備份文件前綴。

--backup-dir 將備份文件(如~filename)存放在在目錄下。

-suffix=SUFFIX 定義備份文件前綴

-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件。(不覆蓋更新的文件)

-l, --links 保留軟鏈結

-L, --copy-links 想對待常規文件一樣處理軟鏈結

--copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結

--safe-links 忽略指向SRC路徑目錄樹以外的鏈結

-H, --hard-links 保留硬鏈結

-p, --perms 保持文件權限

-o, --owner 保持文件屬主信息

-g, --group 保持文件屬組信息

-D, --devices 保持設備文件信息

-t, --times 保持文件時間信息

-S, --sparse 對稀疏文件進行特殊處理以節省DST的空間

-n, --dry-run 模擬運行

-W, --whole-file 拷貝文件,不進行增量檢測

-x, --one-file-system 不要跨越文件系統邊界

-B, --block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節

-e, --rsh=COMMAND 指定使用rsh、ssh方式進行數據同步

--rsync-path=PATH 指定遠程服務器上的rsync命令所在路徑信息

-C, --cvs-exclude 使用和CVS一樣的方法自動忽略文件,用來排除那些不希望傳輸的文件

--existing 僅僅更新那些已經存在於DST的文件,而不備份那些新創建的文件

--delete 刪除那些DST中SRC沒有的文件

--delete-excluded 同樣刪除接收端那些被該選項指定排除的文件

--delete-after 傳輸結束以後再刪除DST中應刪除的文件

--ignore-errors 及時出現IO錯誤也進行刪除

--max-delete=NUM 最多刪除NUM個文件

--max-size=SIZE 不傳輸超過指定大小的文件,SIZE的單位可爲B、K、M、G,默認單位爲B

--min-size=SIZE 不傳輸小於指定大小的文件,SIZE的單位可爲B、K、M、G,默認單位爲B

--partial 保留那些因故沒有完全傳輸的文件,以是加快隨後的再次傳輸

--force 強制刪除目錄,即使不爲空

--numeric-ids 不將數字的用戶和組ID匹配爲用戶名和組名

--timeout=TIME IP超時時間,單位爲秒

-I, --ignore-times 不跳過那些有同樣的時間和長度的文件

--size-only 當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間

--modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,默認爲0

-T --temp-dir=DIR 在DIR中創建臨時文件

--compare-dest=DIR 同樣比較DIR中的文件來決定是否需要備份

--progress 顯示備份過程

-P 等同於 --partial和--progress

-z, --compress 對備份的文件在傳輸時進行壓縮處理

--exclude=PATTERN 指定排除不需要傳輸的文件模式

--include=PATTERN 指定不排除而需要傳輸的文件模式

--exclude-from=FILE 排除FILE中指定模式的文件

--include-from=FILE 不排除FILE指定模式匹配的文件

--version 打印版本信息

--address 綁定到特定的地址

--config=FILE 指定其他的配置文件,不使用默認的rsyncd.conf文件

--port=PORT 指定其他的rsync服務端口

-stats 給出某些文件的傳輸狀態

--progress 在傳輸時現實傳輸過程

--log-format=formAT 指定日誌文件格式

--password-file=FILE 從FILE中得到密碼

--bwlimit=KBPS 限制I/O帶寬,KBytes per second

-h, --help 顯示幫助信息


2.使用舉例

1) rsync -avz /opt/test/s/ ./

源地址和目標地址均在本地,複製s目錄下的內容,但不包括s目錄本身。

注:若源地址結尾沒有“/”,則連同目錄本身一起復制。


2) rsync -avz --progress [email protected]:/opt/test/s ./

使用SSH方式從遠程複製數據到本地,包括s目錄本身。

注:若SSH使用的不是默認端口,則需指定端口,使用命令rsync  -avz  -e 'ssh -p 1234' 

 [email protected]:/opt/test/s ./


3) rsync --list-only [email protected]:/opt/test/s/

通過SSH認證,僅列出源地址的內容。


4) rsync -avHz ./ 192.168.10.121::test

使用rsync-daemon認證,將本地數據傳至遠程,等同於rsync -avHz ./ rsync://192.168.10.121/test 。


5) rsync -avHz --password-file=secret.txt 192.168.10.121::test /cygdrive/f/temp

使用rsync-daemon認證,從遠程傳輸至Windows本地。其中密碼文件權限爲600,內容僅包含密碼,不需用戶名。注意windows路徑的寫法,如F:\temp/cygdrive/f/temp



3.配置服務

    要開啓rsync守護進程,需要進行相關的配置

1) 在Linux上配置

    配置文件模板位於/usr/share/doc/rsync/examples/rsyncd.conf,將其複製至/etc目錄下,修改基本的配置信息

cat /etc/rsyncd.conf

#motd file=/etc/motd 

log file=/var/log/rsyncd

pid file=/var/run/rsyncd.pid 

#syslog facility=daemon

#socket options=

# MODULE OPTIONS

[test]

        comment = Hello,rsync.

        path = /opt/test/s

        use chroot = yes

        max connections=20

        lock file = /var/lock/rsyncd

# the default for read only is yes...

        read only = no

        list = yes

        uid = rs

        gid = rs

#       exclude =

#       exclude from =

#       include =

#       include from =

#       auth users =

        secrets file = /etc/rsyncd.secrets

        strict modes = yes

        hosts allow = 192.168.10.250 192.168.10.251

#       hosts deny =

        ignore errors = no

        ignore nonreadable = yes

        transfer logging = no

#       log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

        timeout = 600

        refuse options = checksum dry-run

        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

修改密碼文件,格式爲用戶名:密碼,設置權限爲600,

cat /etc/rsyncd.secrets

rs:123456

使用service rsync start 或rsync --daemon開啓服務,可使用--config指定配置文件。

在Debian上需要修改/etc/default/rsync 才能使用service rsync start,其中

RSYNC_ENABLE=true

RSYNC_CONFIG_FILE=/etc/rsyncd.conf

2) 在Windows上配置

    windws服務端程序是cwRsyncServer.exe,客戶端cwRsync.exe,配置文件默認位於C:\Program Files (x86)\ICW\rsyncd.conf,修改後如下:

use chroot = false

strict modes = false

log file = rsyncd.log 


pid file = rsyncd.pid

port = 873 #指定端口873

uid = 0 #不指定uid,不加這一行將無法使用任何賬戶

gid = 0 #不指定gid

max connections = 10 #最大連接數10

[hehe] 

lock file = rsyncd.lock

path = /cygdrive/D/tmp/rs/

read only = false

transfer logging = yes

hosts allow=192.168.10.51

auth users = SvcCWRSYNC

secrets file = /cygdrive/D/tmp/rsync.passwd


rsync.passwd文件格式爲用戶名:密碼


客戶端使用如下批處理命令

@echo off
set RSYNC_HOME="D:\cwRsync_5.5.0_x86_Free\bin"
cd %RSYNC_HOME%
D:
rsync -av --delete --progress  --password-file=/cygdrive/E/temp/test/rsync.passwd [email protected]::hehe /cygdrive/e/temp/test
pause


其中rsync.passwd文件只需要包含密碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章