Rsync(remote synchronize)是一個遠程數據同步工具,可經過LAN/WAN快速同步多臺主機間的文件,也能夠使用 Rsync 同步本地硬盤中的不一樣目錄。rsync共有3種使用方法,在配置rsync也是有6個步驟的。下面咱們就從rsync的介紹,rsync的使用和rsync的配置帶你走進rsync的世界linux
Rsync(remote synchronize)是一個遠程數據同步工具,可經過LAN/WAN快速同步多臺主機間的文件,也能夠使用 Rsync 同步本地硬盤中的不一樣目錄。 在使用 rsync 進行遠程同步時,能夠使用兩種方式:遠程 Shell 方式(建議使用 ssh,用戶驗證由 ssh 負責)和 C/S 方式(即客戶鏈接遠程 rsync 服務器,用戶驗證由 rsync 服務器負責)。rsync 被稱爲是一個文件同步的快速方法,主要是由於其在同步文件時會檢查文件之間是否有差別,它只同步存在差別或者不存在的文件,可是首次同步時速度依然很慢。shell
rsync有許多選項: -n: 在不肯定命令是否能按意願執行時,務必要事先測試;-n能夠完成此功能; -v: --verbose,詳細輸出模式 -q: --quiet,靜默模式 -c: --checksum,開啓校驗功能,強制對文件傳輸進行校驗 -r: --recursive,遞歸複製; -a: --archives,歸檔,保留文件的原有屬性 -p: --perms 保留文件的權限 -t: --times 保留文件的時間戳 -l: --links 保留文件的符號連接 -g: --group 保留文件的屬組 -o: --owner 保留文件的屬主 -D: --devices 保留設備文件 -H, --hard-links 保留硬鏈結; -S, --sparse 對稀疏文件進行特殊處理以節省DST的 空間; -e ssh: 表示使用ssh協議做承載 -z: 對文件壓縮後傳輸 --progress:顯示進度條 --stats: 顯示如何執行壓縮和傳輸 --delete:刪除那些DST中有而SRC沒有的文件,即刪除DST中多餘的文件;
rsync能夠在此處下載 http://rsync.samba.org/ ,CentOS系統上rsync默認是安裝的。服務器
rsync有六種不一樣的工做模式:併發
當SRC和DES路徑信息都不包含有單個冒號」:」分隔符時就啓動這種工做模式。ssh
[root@localhost ~]# rsync -avSH /home/feiyu/ /bak/
使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號」:」分隔符時啓動該模式。tcp
[root@localhost ~]# rsync -av /home/feiyu/ 192.168.0.24:/home/feiyu/
使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號」:」分隔符時啓動該模式。工具
[root@localhost ~]# rsync -av 192.168.0.24:/home/feiyu/ /home/feiyu/
注意:rsync命令使用中,若是源參數的末尾有斜線,就會複製指定目錄的內容,而不復制目錄自己;沒有斜線,則會複製目錄自己;目標參數末尾的斜線沒有做用;所以下面的命令測試
[root@localhost ~]# rsync -r /mydata/data /backups/ : 會把目錄data直接同步至/backups目錄中 [root@localhost ~]# rsync -r /mydata/data/ /backups/: 會把目錄data/中的內容的同步至/backups目錄中
後面三種模式都是在rsync做爲服務器時才能使用的,下面就開始配置rsync做爲一個服務。ui
配置一個簡單的rsync服務並不複雜,可是咱們安裝好rsync後,並無發現配置文件,因此你須要手動創建一些配置文件。rsync能夠經由xinetd啓動daemon,或者做爲一個獨立進程啓動daemon。若是把它做爲一個獨立進程來啓動,只須要運行命令:rsync –daemon便可;可是咱們通常將其做爲超級守護進程使用。下面是安裝步驟:spa
[root@localhost ~]# yum -y install xinetd [root@localhost ~]# ls /etc/xinetd.d/ #rsync的xinetd配置文件已經存在 chargen-dgram daytime-dgram discard-dgram echo-dgram rsync time-dgram chargen-stream daytime-stream discard-stream echo-stream tcpmux-server time-stream
配置文件爲/etc/rsyncd.conf,獲取幫助的方式:man rsyncd.conf。配置文件須要定義一個全局配置和多個rsync共享配置。
[root@localhost ~]# cat /etc/rsyncd.conf # Global Settings # port = 873 端口號默認爲873,能夠不指定 uid = nobody //指定當模塊傳輸文件的守護進程UID gid = nobody //指定當模塊傳輸文件的守護進程GID use chroot = no //使用chroot到文件系統中的目錄中 max connections = 5 //最大併發鏈接數 strict modes = yes #嚴格檢查文件權限 pid file = /var/run/rsyncd.pid //指定PID文件 lock file = /usr/local/rsyncd/rsyncd.lock //指定支持max connection的鎖文件,默認爲/var/run/rsyncd.lock log file = /var/log/rsyncd.log //rsync 服務器的日誌 # Directory to be synced [mydata] //自定義模塊 path = /mydata/data //用來指定要備份的目錄 ignore errors = yes //能夠忽略一些IO錯誤 read only = no //設置no,客戶端能夠上傳文件,yes是隻讀 write only = no //no爲客戶端能夠下載,yes 不能下載 hosts allow = 192.168.0.0/16 //能夠鏈接的IP hosts deny = * //禁止鏈接的IP list = false //客戶請求時,使用模塊列表 uid = root gid = root auth users = myuser //鏈接用戶名,和linux系統用戶名無關係 secrets file = /etc/rsyncd.passwd //驗證密碼文件
說明(deny | allow 規則):
一、兩者都不出現時,默認爲容許訪問;
二、只出現hosts allow: 定義白名單;但沒有被匹配到的主機由默認規則處理,即爲容許;
三、只出現hosts deny: 定義黑名單;出如今名單中的都被拒絕;
四、兩者同時出現:先檢查hosts allow,若是匹配就allow,不然,檢查hosts deny,若是匹配則拒絕;如兩者均無匹配,則由默認規則處理,即爲容許;
文件格式(明文): username : password
[root@localhost ~]# echo "myuser:mypass" > /etc/rsyncd.passwd [root@localhost ~]# chmod 600 /etc/rsyncd.passwd #權限必須爲600
[root@localhost ~]# service xinetd start
a. 從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含」::」分隔符時啓動該模式。
[root@localhost ~]# rsync -av myuser@192.168.0.23::mydata /tmp/ #myuser爲rsync服務器的一個用戶
b. 從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含」::」分隔符時啓動該模式。
[root@localhost ~]# rsync -av install.log.syslog myuser@192.168.0.23::mydata
c. 列遠程機的文件列表。這相似於rsync傳輸,不過只要在命令中省略掉本地機信息便可。
[root@localhost ~]# rsync -av myuser@192.168.0.23::mydata免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/