rsync 配置方法

2021-08-13 16:16:14 字數 3529 閱讀 2513

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/

[email protected]

::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 決定了...