rsync是乙個遠端資料同步工具,可通過lan/wan快速同步多台主機間的檔案。它使用所謂的「rsync演演算法」來使本地和遠端兩個主機之間的檔案達到同步,這個演算法只傳送兩個檔案的不同部分,而不是每次都整份傳送,因此速度相當快。所以通常可以作為備份工具來使用。
執行rsync server的機器也叫backup server,乙個rsync server可同時備份多個client的資料;也可以多個rsync server備份乙個client的資料。rsync可以搭配ssh甚至使用daemon模式。rsync server會開啟乙個873的服務通道(port),等待對方rsync連線。連線時,rsync server會檢查口令是否相符,若通過口令查核,則可以開始進行檔案傳輸。第一次連通完成時,會把整份檔案傳輸一次,下一次就只傳送二個檔案之間不同的部份。
基本特點:
可以映象儲存整個目錄樹和檔案系統;
可以很容易做到保持原來檔案的許可權、時間、軟硬鏈結等;
無須特殊許可權即可安裝;
優化的流程,檔案傳輸效率高;
可以使用rcp、ssh等方式來傳輸檔案,當然也可以通過直接的socket連線;
支援匿名傳輸。
命令語法:
rsync的命令格式可以為以下六種:
rsync [option]… src dest
rsync [option]… src [user@]host:dest
rsync [option]… [user@]host:src dest
rsync [option]… [user@]host::src dest
rsync [option]… src [user@]host::dest
rsync [option]… rsync://[user@]host[:port]/src [dest]
對應於以上六種命令格式,我們可以總結rsync有2種不同的工作模式:
當rsync作為daemon執行時,它需要乙個使用者身份。如果你希望啟用chroot,則必須以root的身份來執行daemon,監聽埠,或設定檔案屬主;如果不啟用chroot,也可以不使用root使用者來執行daemon,但該使用者必須對相應的模組擁有讀寫資料、日誌和lock file的許可權。當rsync以daemon模式執行時,它還需要乙個配置檔案——rsyncd.conf。修改這個配置後不必重啟rsync daemon,因為每一次的client連線都會去重新讀取該檔案。
我們一般把dest遠端伺服器端成為rsync server,執行rsync命令的一端src稱為client。
# rsync -auvrtzopgp --progress /root/ /tmp/rsync_bak/
會看到從/root/
傳輸檔案到/tmp/rsync_bak/
的列表和速率,再執行一次會看到sending incremental file list下沒有複製的內容,可以在/root/下touch
某乙個檔案再執行看到只同步了修改過的檔案。
上面需要考慮以下問題:
** /etc/rsyncd.conf: **
5 # configuration example:
6 7 uid = root //設定執行rsync 程序的使用者
8 gid = root
9 use chroot = no
10 max connections = 4
11 # pid file = /var/run/rsyncd.pid
12 exclude = lost+found/
13 transfer logging = yes
14 timeout = 900
15 ignore nonreadable = yes
//同步時跳過沒有許可權的目錄
16 # dont compress = *.gz *.tgz *.zip *.z *.z *.rpm *.deb *.bz2
17 18 # [ftp]
19 # path = /home/ftp
20 # comment = ftp export area
21 [module_test] //此名字即客戶端使用rsync來同步的路徑
22 path=/temp/ //實際需要同步的路徑
23 comment=rsync test logs
24 auth user=root //客戶端獲取檔案的身份此使用者並不是本機中確實存在的使用者
25 secrets file=/etc/rsync.secrets //用來認證客戶端的秘鑰檔案 格式 username:passwd 許可權改為600
26 read only=no
27 write only=no
28 list=no
29 host allow=* //允許所有主機訪問
這裡配置socket方式傳輸檔案,埠873,[module_test]開始定義乙個模組,指定要同步的目錄(接收)path,授權使用者,密碼檔案,允許哪台伺服器ip同步(傳送)等。
** /etc/rsyncd.secrets: **
sean:password
單向同步時,客戶端只需要乙個包含密碼的檔案。
vim /etc/rsync_client.pwd:
password
chmod 600 /etc/rsync_client.pwd
命令:
將本地/root/
目錄同步到遠端172.29.88.223的/tmp/rsync_bak2目錄(module_test指定):
/usr/bin/rsync -auvrtzopgp --progress --password-file=/etc/rsync_client.pwd /tmp/
::module_test
當然你也可以將遠端的/tmp/rsync_bak2目錄同步到本地目錄/root/tmp:
從上面兩個命令可以看到,其實這裡的伺服器與客戶端的概念是很模糊的,rsync daemon都執行在遠端172.29.88.223上,第一條命令是本地主動推送目錄到遠端,遠端伺服器是用來備份的;第二條命令是本地主動向遠端索取檔案,本地伺服器用來備份,也可以認為是本地伺服器恢復的乙個過程。
借鑑
Rsync安全配置
建立rsync的密碼檔案,格式username password vi etc rsyncd.secrets建立rsync共享配置檔案 vi etc rsyncd.conf新增如下內容 pid file var run rsyncd.pid port 873 uid root gid root us...
rsync配置教程
專案由於是集群配置 4臺 負載均衡f5,而且一開始沒有考慮伺服器,所以上傳功能導致不知道上傳到那台伺服器上,只能臨時抱佛腳用rsync做互為同步功能。root hammer home rpm qa grep rsync 檢查系統是否安裝了rsync軟體包 rsync 2.6.8 3.1 root h...
rsync 配置詳解
root localhost yum install y rsync root localhost systemctl start rsyncd root localhost systemctl enable rsyncd root localhost vim etc rsyncd.conf 決定了...