linux rsync安裝 配置 執行個體詳解_linux shell

來源:互聯網
上載者:User

Redhat中安裝rsync

1、  首先在服務端和用戶端都安裝rsync,我的RHEL5預設已經安裝好了。在安裝RedHat5的時候,可以在軟體定製中的“基本系統”——》“基本”的“可選的軟體包”中看見:rsync-2.6.8是預設選擇安裝的

2、    也可以通過命令列檢查是否安裝:

或者:rpm –q rsync

3、  如果在開始安裝RedHat的時候,使用預設選擇的rysnc軟體,但現在想用更高版本的rsync,可以卸載掉rysnc,再安裝更高版本的軟體:

4、    卸載完2.6.8版本的rysnc,下面來安裝更高版本的rsync(3.0.9):



配置rsync伺服器端

5、  修改rsync的設定檔

可以看到rysnc服務是關閉的(disable = yes),這裡把它開啟,把disable的值改為no

6、  建立rsync伺服器設定檔/etc/rsyncd.conf

[root@hyj etc]# vim /etc/rsyncd.confuid = rootgid = root  port = 873                #    指定運行連接埠,預設是873,您可以自己指定hosts allow = 192.168.0.204, 192.168.1.205     # 允許訪問的客戶機#hosts deny = 0.0.0.0/32           #拒絕訪問的use chroot = max connections = timeout=## 下面這些綠色檔案是安裝完RSYNC服務後自動產生的檔案,當然也可以手動設定到指定路徑pid file = /var/run/rsyncd.pid   ##pid檔案的存放lock file = /var/run/rsync.lock   ##鎖檔案的存放位置log file = /var/log/rsyncd.log   ##日誌記錄檔案的存放#motd file = /etc/rsyncd.motd   #歡迎## 上面這段是全域配置,下面的模組可以有  [test]          ## 模組名字,自己命名  path = /home/hyj/workspace/test        #指定檔案目錄所在位置,這是必須指定   comment = rsync files             ## 注釋ignore errors                 ##忽略IOread only = yes   list = no                   ## 是否把rsync 伺服器上提供同步資料的目錄顯示  ## 下面這一行,同步驗證時用的帳號,如果沒有這項就是匿名同步,client同步時不用使用者名稱也能同步。  auth users = rsyncsecrets file = /etc/rsync.passwd       ## 指定認證檔案

7、  然後建立認證檔案:

[root@hyj etc]# vim /etc/rsync.passwd
 rsync:hyl            ## 使用者名稱:密碼。注意這個不是系統使用者,只是rsync使用者。

所以不用useradd。

(名字隨便寫,只要和上邊設定檔裡的“auth users”參數一致即可),格式(一行一個使用者)

帳號:密碼

(2)、把密碼檔案的許可權改成600

[root@hyj etc]# chmod 600 /etc/rsync.passwd          ## 只能所有者可讀,否則報錯

8、   如果在設定檔中指定了歡迎資訊,在/etc下建立rsyncd.motd,設定歡迎資訊:

[root@hyj etc]# vim /etc/rsyncd.motd
      Welcome the rsync services!

啟動rsyn

9、    在啟動之前,可以先看一下rsync是否已經啟動運行:用lsof或者nestat都可以


    根據輸出顯示state為LISTEN,表示為等待接受連結的狀態,說明rsync已經啟動。

    現在先kill掉rsync進程,kill之前為上圖,kill之後,再次執行netstat –anp|grep 873或者lsof –i:873,結果為空白:


10、 防火牆設定:

如果伺服器上裝有防火牆,需在伺服器中設定iptables將837連接埠開放。

[root@hyj ~]# iptables -A INPUT -p tcp --dport 873 -j ACCEPT

11、 如果rsync進程沒有運行,在server端將rsync啟動:

(1)、啟動rsync服務端(以守護進程形式,獨立啟動)

#/usr/bin/rsync –daemon

說明啟動成功。

(切記:命令列啟動的最後是daemon,而不是deamon,否則回報如下錯誤:

rsync: --deamon: unknown option

rsync error: syntax or usage error (code 1) at main.c(1231) [client=2.6.8])

(2)、啟動rsync服務端 (以xinetd超級進程啟動)

# /etc/rc.d/init.d/xinetd reload(reload是網上的說法,但是我試了一下報錯,start可以)
             或者:/etc/rc.d/init.d/xinetd reload(reload是網上的說法,但是我試了一下報錯,start可以)

          示範:

    

12、 設定自動啟動:

本機安裝的Redhat中rsync已經是開機自動啟動的,網上說的那兩種方法,設定檔中都沒有找到相應的配置,通過用chkconfig 命令查看和修改開機啟動服務.
[root@hyj ~]# chkconfig

(結果部分省略),可以看出rsync處於on的狀態。

配置rsync用戶端

13、用安裝伺服器端的方式安裝rsync。

14、啟動rsync,如果報如下錯誤,是因為在etc下沒有rsyncd.conf設定檔:


15、[root@hyj etc]# vi /etc/rsyncd.conf

檔案內容為空白就行。然後啟動rsync,可以啟動:

命令和執行個體

16、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]

17、常用為以下兩種:

(4)、rsync [OPTION]... [USER@]HOST::SRC   DEST

從遠程rsync伺服器中拷貝檔案到本地機。當SRC路徑資訊包含"::"分隔字元時啟動該模式。

如:rsync -av root@172.16.78.192::www /databack

(5)、rsync [OPTION]... SRC   [USER@]HOST::DEST

從本地機器拷貝檔案到遠程rsync伺服器中。當DST路徑資訊包含"::"分隔字元時啟動該模式。

如:rsync -av /databack root@172.16.78.192::www

18、下面為執行個體:

    伺服器ip為192.168.8.126,用戶端ip為192.168.8.122

19、 (1)、把伺服器上的/home/hyj/workspace/test檔案夾中的內容備份到用戶端的/usr/local/share/rsync_backup中:
[root@hyj ~]# /usr/bin/rsync -vzrtopg --delete  --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup

/etc/rsyncd.conf中模組的內容:

path = /home/hyj/workspace/testcomment = rsync filesignore errorsread only = yeslist = noauth users = rsyncsecrets file = /etc/rsync.passwd

上面這個命令列中-vzrtopg裡的v是verbose,z是壓縮,r是recursive,topg都是保持檔案原有屬性如屬主、時間的參數(也可以用直接用a來代替rtopg, a為 --archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD)。--progress是指顯示出詳細的進度情況,--delete是指如果伺服器端刪除了這一檔案,那麼用戶端也相應把檔案刪除,保持真正的一致。

(2)、上面的命令需要在備份的時候需要輸入密碼,可以在用戶端建立一個密碼檔案,在命令中把密碼檔案作為參數帶入:

[root@hyj rsync_backup]# vim /etc/rsync.pass
密碼檔案中不用輸入使用者名稱,只需輸入密碼即可:

這份密碼檔案許可權屬性要設得只有root可讀,不然會報錯,修改屬性:

[root@hyj rsync_backup]# chmod 600 /etc/rsync.pass,

    用下面這條命令,可以不輸入密碼:

    /usr/bin/rsync -vzrtopg --delete --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass

20、 帶exclude 參數:

把伺服器上的/home/hyj/workspace/test檔案夾中的內容備份到用戶端的/usr/local/share/rsync_backup中,但不包括:res目錄和default.properties檔案:

/usr/bin/rsync -vzrtopg --delete --exclude "res/" --exclude "default.properties" --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass

    exclude/include規則執行個體

Here are some exclude/include examples: --exclude "*.o"  would exclude all filenames matching *.o --exclude "/foo" would exclude a file in the base directory called foo --exclude "foo/" would exclude any directory called foo. --exclude "/foobar" would exclude any file called bar two or more levels below a base directory called foo. --include "*/" --include "*.c" --exclude "*" would include all directories and C source files--include "foo/" --include "foo/bar.c" --exclude "*" would include only foo/bar.c (the foo/ directory must be explicitly included or it would be excluded by the "*")

21、 把用戶端上的/home/hyj/vitest檔案夾中的內容備份到伺服器的/usr/local/share/rsync_backup中,在用戶端執行如下命令:

  /usr/bin/rsync -vzrtopg --delete --progress /home/hyj/vitest rsync@192.168.8.126::clientdata --password-file=/etc/rsync.pass

此時伺服器的設定檔/etc/rsyncd.conf內容為:

 uid = rootgid = roothosts allow = 192.168.8.122, 192.168.8.123   #hosts deny = 0.0.0.0/32   use chroot = no   max connections = 10   pid file = /var/run/rsyncd.pid   lock file = /var/run/rsync.lock   log file = /var/log/rsyncd.log   timeout=600[test]path = /home/hyj/workspace/test   comment = rsync files   ignore errors   read only = yes   list = no   auth users = rsync   secrets file = /etc/rsync.passwd # 上面的命令中,用戶端的資料備份到clientdata模組中,備份到/usr/local/share/rsync_backup檔案夾下,read only改為no,# # 否則會報ERROR: module is read only的錯誤[clientdata]     path = /usr/local/share/rsync_backupcomment = rsync files   ignore errors   read only = no   list = noauth users = rsync   secrets file = /etc/rsync.passwd

 定時計劃備份

22、 如果執行crontab命令提示:

說明還沒有為root這個帳號提供crontab。執行crontab –e 建立一個crontab:


23、 編輯crontab,每兩分鐘備份一次:

24、 兩分鐘後,查看,資料已經備份:

25、 每天上午9點20執行rysnc備份任務:

20 9 * * *       /usr/bin/rsync -vzrtopg --delete  --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass

 

26、附時間設定:

(1)、查看當前時區 :  date -R
(2)、查看時間和日期:date
(3)、設定時間和日期:
      將系統日期設定成2012年8月4日的命令:date -s 08/04/2012
      將系統時間設定成下午9點20分0秒的命令:date -s 09:20:00
(4)、將目前時間和日期寫入BIOS,避免重啟後失效:hwclock -w

FAQ

27、我需要在防火牆上開放哪些連接埠以適應rsync?

A:視情況而定

    rsync可以直接通過873連接埠的tcp串連傳檔案,也可以通過22連接埠的ssh來進行檔案傳遞,但你也可以通過下列命令改變它的連接埠:

   rsync --port 8730 otherhost::

或者

rsync -e 'ssh -p 2002' otherhost:

28、 我如何通過rsync只複製目錄結構,忽略掉檔案呢?

A:rsync -av --include '*/' --exclude '*' source-dir dest-dir

常見錯誤

29、rsync: failed to connect to 218.107.243.2: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]

解決:對方沒開機、防火牆阻擋、通過的網路上有防火牆阻擋,都有可能。關閉防火牆,其實就是把tcp udp 的873連接埠開啟:

   解決辦法:開啟伺服器873連接埠(RH-Firewall-1-INPUT為REHL 5內建的鏈名,10為最後一條預設規則(拒絕所以),根據實際情況修改這兩個參數。另外“-m state --state NEW -m tcp”參數不加也行)

    #iptables -I RH-Firewall-1-INPUT 10 -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
    #iptables -I RH-Firewall-1-INPUT 10 -p udp -m state --state NEW -m udp --dport 873 -j ACCEPT

   開啟連接埠之前的iptables配置:

註:最後一條規則(REJECT  all -- anywhere   anywhere reject-with icmp-host-prohibited)表示拒絕所有的資料包,並向對方回應icmp-host- prohibited資料包。

本機測試通過的方法,開啟伺服器873連接埠:

(1)、[root@duoduo ~]# iptables -I INPUT -p tcp --dport 873 -j  
       [root@duoduo ~]# iptables -I INPUT -p udp --dport 873 -j ACCEPT

    (注意要用-I,而不能用-A,用A的話會添加這條規則到iptables鏈的最後,但是沒有到這條規則就被原來的最後一條REJECT了,用戶端還是無法執行rysnc備份,用I的話會插入到鏈的最前面,經過測試可以正常執行rysnc備份。另外“-m state --state NEW -m tcp”參數可以加上)。

(2)、上面提到的,插入規則到最後一條的前面:

#iptables -I RH-Firewall-1-INPUT 10 -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
#iptables -I RH-Firewall-1-INPUT 10 -p udp -m state --state NEW -m udp --dport 873 -j ACCEPT

  插入之前:

插入規則:



插入規則後:


再在用戶端執行,可以正常執行。

    (3)、或者關閉伺服器的iptables:service iptables stop

30、password file must not be other-accessible

continuing without password file

Password:

解決:這是因為rsyncd.pwd rsyncd.sec的許可權不對,應該設定為600。如:chmod 600 rsyncd.pwd

31、@ERROR: auth failed on module xxxxx

rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)

解決:這是因為密碼設定錯了,無法登入成功,檢查一下rsync.pwd,看客服是否匹配。還有伺服器端沒啟動rsync 服務也會出現這種情況。

32、@ERROR: chroot failed

rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)

解決:這是因為你在 rsync.conf 中設定的 path 路徑不存在,要建立目錄才能開啟同步。

33、[root@hyj rsync_backup]# /usr/bin/rsync -vzrtopg --delete --exclude "res/" --exclude "default.properties" --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1516) [Receiver=3.0.9]

原因及解決辦法:

    SELinux;(下面這條命令在伺服器端執行)
    setsebool -P rsync_disable_trans on

34、ERROR: module is read only
rsync: read error: Software caused connection abort (113)
rsync error: error in rsync protocol data stream (code 12) at io.c(769) [sender=3.0.8]

解決:這是因為伺服器端設定檔rsyncd.conf中read only = yes,為唯讀,即不允許用戶端上傳檔案,改成no就可以了。
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.