Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件,也可以使用 Rsync 同步本地硬盤中的不同目錄。 在使用 rsync 進行遠程同步時,可以使用兩種方式:遠程 Shell 方式(建議使用 ssh,用戶驗證由 ssh 負責)和 C/S 方式(即客戶連接遠程 rsync 服務器,用戶驗證由 rsync 服務器負責)。rsync 被稱為是一個文件同步的快速方法,主要是因為其在同步文件時會檢查文件之間是否有差異,它只同步存在差異或者不存在的文件,但是首次同步時速度依然很慢。
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使用方法
rsync可以在此處下載 http://rsync.samba.org/ ,CentOS系統上rsync默認是安裝的。
rsync有六種不同的工作模式:
1. 拷貝本地文件當SRC和DES路徑信息都不包含有單個冒號”:”分隔符時就啟動這種工作模式。
[root@localhost ~]# rsync -avSH /home/feiyu/ /bak/2.將本地機器的內容拷貝到遠程機器
使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號”:”分隔符時啟動該模式。
[root@localhost ~]# rsync -av /home/feiyu/ 192.168.0.24:/home/feiyu/3.將遠程機器的內容拷貝到本地機器
使用一個遠程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作為一個服務。
三,配置rsync服務配置一個簡單的rsync服務並不復雜,但是我們安裝好rsync後,並沒有發現配置文件,所以你需要手動建立一些配置文件。rsync可以經由xinetd啟動daemon,或者作為一個獨立進程啟動daemon。如果把它作為一個獨立進程來啟動,只需要運行命令:rsync –daemon即可;但是我們一般將其作為超級守護進程使用。下面是安裝步驟:
1.安裝並啟動xinetd[root@localhost ~]# yum -y install xinetd [root@localhost ~]# ls /etc/xinetd.d/ #rsync的xinetd配置文件已經存在chargen-dgram daytime-dgram discard-dgram echo-dgram rsync time-dgramchargen-stream daytime-stream discard-stream echo-stream tcpmux-server time-stream2. 為rsync服務提供配置文件
配置文件為/etc/rsyncd.conf,獲取幫助的方式:man rsyncd.conf。配置文件需要定義一個全局配置和多個rsync共享配置。
[root@localhost ~]# cat /etc/rsyncd.conf # Global Settings# port = 873 端口號默認為873,可以不指定uid = nobody //指定當模塊傳輸文件的守護進程UIDgid = nobody //指定當模塊傳輸文件的守護進程GIDuse 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.locklog 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 //可以連接的IPhosts deny = * //禁止連接的IPlist = false //客戶請求時,使用模塊列表uid = rootgid = rootauth users = myuser //連接用戶名,和linux系統用戶名無關系secrets file = /etc/rsyncd.passwd//驗證密碼文件
說明(deny | allow 規則):
1、二者都不出現時,默認為允許訪問;
2、只出現hosts allow: 定義白名單;但沒有被匹配到的主機由默認規則處理,即為允許;
3、只出現hosts deny: 定義黑名單;出現在名單中的都被拒絕;
4、二者同時出現:先檢查hosts allow,如果匹配就allow,否則,檢查hosts deny,如果匹配則拒絕;如二者均無匹配,則由默認規則處理,即為允許;
文件格式(明文): username : password
[root@localhost ~]# echo "myuser:mypass" > /etc/rsyncd.passwd [root@localhost ~]# chmod 600 /etc/rsyncd.passwd #權限必須為6004.啟動服務
[root@localhost ~]# service xinetd start5.使用方法 ( 後三種模式 )
a. 從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含”::”分隔符時啟動該模式。
[root@localhost ~]# rsync -av [email protected]::mydata /tmp/ #myuser為rsync服務器的一個用戶
b. 從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含”::”分隔符時啟動該模式。
[root@localhost ~]# rsync -av install.log.syslog [email protected]::mydata
c. 列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。
[root@localhost ~]# rsync -av [email protected]::mydata
原文來自:http://www.tianfeiyu.com/?p=1975
本文地址:http://www.linuxprobe.com/use-rsync-file.html
http://xxxxxx/Linuxjc/1184708.html TechArticle