【驚雷】Linux下Rsync的檔案同步的配置過程,linuxrsync

來源:互聯網
上載者:User

【驚雷】Linux下Rsync的檔案同步的配置過程,linuxrsync

Rsync的檔案同步實現

一、rsync 簡介

    Rsync(remote synchronize)是一個遠端資料同步工具,簡要的概括就是主機於主機之間的檔案目錄資料的一個同步。

   它的特性如下:   可以鏡像儲存整個分類樹和檔案系統。    可以很容易做到保持原來檔案的許可權、時間、軟永久連結等等。    無須特殊許可權即可安裝。    快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的檔案。rsync 在傳輸資料的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的頻寬。    安全:可以使用scp、ssh等方式來傳輸檔案,當然也可以通過直接的socket串連。   支援匿名傳輸,以方便進行網站鏡象   度娘上面的解析。(我懶得看,可謂見其文,不如悟其理。看著我操作一遍立刻明白!)

  總的來說是一個容錯、可靠、高效的檔案同步工具 。 

 

二、環境需求(虛擬機器上面搭建的環境)

系統:ceotos 6.5  核心:2.6.32-431.el6.x86_64

主機A:192.168.0.244/24        

主機B:192.168.0.144/24

rsync-3.1.2.tar.gz

三、搭建rsync

rsync在主機A上面配置:

注意:rsync最重要的2個檔案    1、rsyncd.conf    設定檔

2、rsyncd.password  使用者密碼檔案   

其他的rsyncd.motd  這些是次要的,這隻是一個顯示頁面資訊,類似於訪問一個伺服器的時候提示的一些廣告似的資訊。

本次操作中我在主機A的etc目錄下面直接建立了上面三個檔案。

-rw-r--r-- 1 root root 443 Aug 16 10:49 /etc/rsyncd.conf-rw-r--r-- 1 root root 252 Aug 16 10:44 /etc/rsyncd.motd-rw-r--r-- 1 root root  18 Aug 16 10:44 /etc/rsyncd.password

rsync.passwd:

nowview:nowcaster

rsync.motd:(打廣告了)

******************************************                                       **                Rsync                  **                                       **                                       ******************************************

rsyncd.conf:這裡我只是主要測試這個檔案同步的功能,你們需要其他更多的功能的話,可以自行添加相關參數模組即可,可以參考:

http://www.cnblogs.com/mchina/p/2829944.html

#This is rsync conf######uid = nowview  #需要添加的,以及下面的模組裡面的目錄backup的屬性需要改為nowview使用者的gid = nowview  #關於這個uid跟gid沒有處理好,後面在同步備份檔案的時候後報錯,檔案許可權不夠。用root最保守,不過安全性。。這個需要自己認真調配置參數max connections = 200timeout = 300pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.log #可以設定顯示格式log format = %t %a %m %f %bmotd file = /etc/rsyncd.motd  #第一個打廣告資訊 - -[backup]   #同步的模組的名稱path = /home/backup  #模組下面的同步具體路徑ignore errorsread only = falselist = falsehosts allow = *hosts deny = 0.0.0.0/32auth users = nowview    #使用者名稱secrets file = /etc/rsyncd.passwordexclude =  www/ GR068/  #這是除了home目錄的下www  跟GR068目錄comment = loading.....  #第二個打廣告資訊,下面測試的時候可以看到 - -

找一下rsync的主程式,一般安裝在了  /usr/local/bin/rsync   

cp -a   /usr/local/bin/rsync   /usr/bin/rsync    放到bin下面

下面使用daemon啟動rsync

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf 

ps看一下進程,rsync的預設連接埠是873   

[root@主機A-144 home]# ps -ef |grep rsyncroot       5835      1  0 10:51 ?        00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.confroot       5864   1323  0 11:08 pts/1    00:00:00 grep --color rsync
[root@主機A-144 home]# netstat -lantup |grep 873tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      5835/rsync          tcp        0      0 :::873                      :::*                        LISTEN      5835/rsync          

繼續。。。

想開機啟動的話,把

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf   添加到/etc/rc.d/rc.local 下面即可
注意:1、這個rsyncd.passwd 檔案 的所屬組是root 如果你的目前使用者比如是rsync那就是改成rsync即可
chown rsync.rsync /etc/rsyncd.password  
2、rsyncd.passwd  的許可權改為600  否則密碼無法訪問
[root@主機A-144 ~]# chmod 600 /etc/rsyncd.password [root@主機A-144 ~]# ll -d /etc/rsyncd.password-rw------- 1 root root 18 Aug 16 10:44 /etc/rsyncd.password[root@主機A-144 ~]# 

在主機A添加nowview使用者

useradd nowview

以上在主機A配置全部完畢!

四、測試

下面在主機B上面進行測試。

曾經在測試的時候出現過形形色色的問題(粗心--),我把這些問題歸納在一起。

注意:1、為了方便測試,我就把主機A和主機B的防火牆直接關閉掉,如果你對這方面有要求的話,就直接把873這個連接埠從兩邊打通即可。

2、主機B不用再做任何的配置和操作,只要保持連通性即可。除非你想免去密碼訪問,每次都輸入密碼使你心煩,那就在etc下面跟主機A一樣建立一個密碼文檔,注意了。這個密碼文檔只需要填寫密碼即可。這個密碼文檔一樣是600許可權!

下面做簡單的訪問

[root@主機B-244 ~]# rsync -avzp  nowview@192.168.0.144::******************************************                                       **                Rsync                  **                                       **                                       ******************************************

下面測試,免除密碼訪問

rsync -avzp  --delete  nowview@192.168.0.144::backup  /backup244/ --password-file=/etc/rsyncd.password 

在主機B的根目錄下面已經建立了backup244的備份目錄了,現在把主機共用A模組(即/home/backup目錄下的文檔,全部備份過來backup244目錄,免除密碼訪問,以及有刪改的對應主機A的刪改)

效果如下

主機A上面的20個檔案

[root@主機A-144 backup]# pwd/home/backup[root@主機A-144 backup]# for a in `seq 20`;do touch $a.txt;done    #建立20個檔案   [root@主機A-144 backup]# lltotal 0-rw-r--r-- 1 root root 0 Aug 16 14:33 10.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 11.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 12.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 13.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 14.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 15.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 16.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 17.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 18.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 19.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 1.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 20.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 2.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 3.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 4.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 5.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 6.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 7.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 8.txt-rw-r--r-- 1 root root 0 Aug 16 14:33 9.txt

主機B的效果如下

[root@主機B-244 /]# rsync -avzp  --delete  nowview@192.168.0.144::backup  /backup244/ --password-file=/etc/rsyncd.password ******************************************                                       **                Rsync                  **                                       **                                       ******************************************receiving incremental file listdeleting 7897798798798789797/deleting GGGGGGGGGdeleting 4564656566./1.txt10.txt11.txt12.txt13.txt14.txt15.txt16.txt17.txt18.txt19.txt2.txt20.txt3.txt4.txt5.txt6.txt7.txt8.txt9.txtsent 410 bytes  received 988 bytes  2796.00 bytes/sectotal size is 0  speedup is 0.00[root@主機B-244 /]# ls /backup244/10.txt  12.txt  14.txt  16.txt  18.txt  1.txt   2.txt  4.txt  6.txt  8.txt11.txt  13.txt  15.txt  17.txt  19.txt  20.txt  3.txt  5.txt  7.txt  9.txt

可以看到,全部檔案備份過來了。

(-azvp參數是什麼意思,參考上面的文檔,有詳細解析)

下面從主機B推資料推到伺服器上面去(上面的是從主機A拉資料過來主機B)

主機A的/home/backup 目錄為空白目錄

[root@主機A-144 backup]# lltotal 0[root@主機A-144 backup]# pwd/home/backup

主機B下面有一個檔案和一個目錄

[root@主機B-244 backYYY]# ll總用量 8-rw-r--r--. 1 root root 1857 7月  21 13:55 OO.txxdrwxr-xr-x  2 root root 4096 7月  21 14:04 Work[root@主機B-244 backYYY]# du -sh Work/116K    Work/[root@主機B-244 backYYY]# pwd/home/backYYY

下面開始推:

[root@主機B-244 backYYY]# rsync -avzq /home/backYYY/  nowview@192.168.0.144::backup  --password-file=/etc/rsyncd.password [root@主機B-244 backYYY]# 

可以看到主機A上面的/home/backup目錄下的情況變化

[root@主機A-144 backup]# pwd/home/backup[root@主機A-144 backup]# lltotal 8-rw-r--r-- 1 root root 1857 Jul 21 13:55 OO.txxdrwxr-xr-x 2 root root 4096 Jul 21 14:04 Work[root@主機A-144 backup]# du -sh Work/116K    Work/[root@主機A-144 backup]# 

基本上rsync的推拉資料同步測試完畢。

#################################################################

五、總結

報錯主要常見種類與解決:

1、rsync: chgrp "/Work/.yum.conf.VOzf5y" (in backup) failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

這是在用戶端(主機B)備份的時候會出現,檔案許可權的問題。

解決:把uid 跟gid的改成root 這是最快解決的途徑,要不就是調一下設定檔參數,讀寫那裡。

2、@ERROR: auth failed on module rsync
rsync error: error starting client-server protocol 

這種情況其實不僅僅是密碼錯誤會報錯,好多情況下它都會報。

解決:檢查下面幾點:(1)檢查設定檔的參數secrets file 名稱有沒有打錯,密碼檔案路徑有沒有錯,密碼格式主配置的是:使用者名稱:密碼  的格式,用戶端的只有一個密碼沒有使用者名稱。

(2)檢查伺服器有沒有配置auth users = 使用者  ,沒配置使用者的配置上,共用模組backup的路徑目錄/home/backup  這個backup的許可權屬性是不是對應auth users的使用者的。

(3)、認真全面檢查一遍設定檔,看到報錯client-server protocol 這個的,一般牽涉的很多問題都有可能

3、password file must not be other-accessible 
continuing without password file 

解決:密碼文檔的許可權改為600   有許可權屬性的最好改為改使用者 auth users = 使用者

4、No route to host 

主機間連接埠不通啊

解決:要不把iptables關閉,要不兩邊打通873連接埠

5、@ERROR: invalid gid nobody
rsync error: error starting client-server protocol 

設定檔報錯gid nobody

解決:這個gid nobody在設定檔裡面不能這麼寫,改成所屬使用者或者直接改root吧

總結:一般搞清楚設定檔裡面部署的許可權,所屬組的許可權問題。基本上好少報錯了,基本上都是許可權在報錯。其他報錯就是粗心大意導致的了。

 

【上述有錯誤的地方,希望各位給予指出,感謝】

後續。。。

隨著勞動力的快速發展,每次的手工同步真的挺麻煩,如果主機間能夠自動的即時的同步那該多高效!

下面的這的歀配搭正好完美解決上面所說的問題,歡迎繼續關注本部落格,下期博文為你呈現rsync+inotify的即時同步的實現。

(首次發表博文,還望各位大能不吝賜教,萬分感謝)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.