linux伺服器 rsync同步設定詳細指南

來源:互聯網
上載者:User

本文章來給大家介紹linux伺服器 rsync同步設定詳細指南,希望些方法對各位同學會有所協助。

一.介紹 (不想看直接可以跳過)
遷移EMOS伺服器,新伺服器搭建好之後做完了測試,接著很重要的工作就是要完整的把老郵件系統中的郵件資料移轉過來,選擇拷貝的方式自然可以,但是難免會丟失一些郵件(在此期間收到的郵件),於是就考慮到了rsync。

Rsync  是一個遠端資料同步工具,可通過  LAN/WAN  快速同步多台主機間的檔案。  Rsync  本來是用以取代  rcp  的一個工具,它當前由   rsync.samba.org  維護。  Rsync  使用所謂的“  Rsync   演算法   ”來使本地和遠程兩個主機之間的檔案達到同步,這個演算法只傳送兩個檔案的不同部分,而不是每次都整份傳送,因此速度相當快。運行  Rsync server  的機器也叫  backup server  ,一個  Rsync server  可同時備份多個  client  的資料;也可以多個  Rsync server  備份一個  client  的資料。

  Rsync  可以搭配  rsh  或  ssh  甚至使用  daemon  模式。  Rsync server  會開啟一個  873  的服務通道  (port)  ,等待對方  Rsync  串連。串連時,  Rsync server  會檢查口令是否相符,若通過口令查核,則可以開始進行檔案傳輸。第一次連通完成時,會把整份檔案傳輸一次,下一次就只傳送二個檔案之間不同的部份。

  Rsync  支援大多數的類  Unix  系統,無論是  Linux  、  Solaris  還是  BSD  上都經過了良好的測試。此外,它在  windows  平台下也有相應的版本,比較知名的有  cwRsync  和  Sync2NAS  。

Rsync  的基本特點如下:
1.  可以鏡像儲存整個分類樹和檔案系統;

2.  可以很容易做到保持原來檔案的許可權、時間、軟永久連結等;

3.  無須特殊許可權即可安裝;

4.  最佳化的流程,檔案傳輸效率高;

5.  可以使用  rcp  、  ssh  等方式來傳輸檔案,當然也可以通過直接的  socket  串連;

6.  支援匿名傳輸。

核心演算法介紹:
假定在名為α和β的兩台電腦之間同步相似的檔案  A  與  B  ,其中α對檔案  A  擁有訪問權,β對檔案  B  擁有訪問權。並且假定主機α與β之間的網路頻寬很小。那麼  rsync  演算法將通過下面的五個步驟來完成:

1.  β將檔案  B  分割成一組不重疊的固定大小為  S  位元組的資料區塊。最後一塊可能會比  S   小。

2.  β對每一個分割好的資料區塊執行兩種校正:一種是  32  位的滾動弱校正,另一種是  128  位的  MD4  強校正。

3.  β將這些校正結果發給α。

4.  α通過搜尋檔案  A  的所有大小為  S  的資料區塊  (  位移量可以任選,不一定非要是  S  的倍數  )  ,來尋找與檔案  B  的某一塊有著相同的弱校正碼和強校正碼的資料區塊。這項工作可以藉助滾動校正的特性很快完成。

5.  α發給β一串指令來組建檔案  A  在β上的備份。這裡的每一條指令要麼是對檔案  B  經擁有某一個資料區塊而不須重傳的證明,要麼是一個資料區塊,這個資料區塊肯定是沒有與檔案  B  的任何一個資料區塊匹配上的。

 

命令:

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 有六種不同的工作模式:

  1) 拷貝本地檔案。當 SRC 和 DES 路徑資訊都不包含有單個冒號 ":" 分隔字元時就啟動這種工作模式。

  2) 使用一個遠程 shell 程式 ( 如 rsh 、 ssh) 來實現將本地機器的內容拷貝到遠程機器。當 DST 路徑地址包含單個冒號 ":" 分隔字元時啟動該模式。

  3) 使用一個遠程 shell 程式 ( 如 rsh 、 ssh) 來實現將遠程機器的內容拷貝到本地機器。當 SRC 地址路徑包含單個冒號 ":" 分隔字元時啟動該模式。

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

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

6) 列遠程機的檔案清單。這類似於 rsync 傳輸,不過只要在命令中省略掉本地機資訊即可。

一、配置rsync服務端同步資料(rpm包安裝rsync及配置)
[root@mail home]# rpm -qa |grep rsync                 #檢查系統是否安裝了rsync軟體包

rsync-2.6.8-3.1

[root@mail CentOS]# rpm -ivh rsync-2.6.8-3.1.i386.rpm     #如果沒有安裝則手動安裝

[root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync

 

 

1 配置rsync server

vi /etc/xinetd.d/rsync

將disable=yes改為no

 

service rsync

{

disable = no

socket_type     = stream

wait            = no

user            = root

server          = /usr/bin/rsync

server_args     = --daemon

log_on_failure  += USERID

}

 

2 配置rsync自動啟動

[root@test etc]# chkconfig rsync on

[root@test etc]# chkconfig rsync --list

rsync           on

 

3 配置rsyncd.conf

[root@test etc]# vim rsyncd.conf

 

uid = root

gid = root

use chroot = no

max connections = 4

strict modes = yes

port = 873

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

 

[backup]

path =/home/domains/kidslandchina.com

comment = MailDirectory

auth users = mail

uid = root

gid = root

secrets file = /home/rsync.ps

read only = no

list = no

 

 

4 確保etc/services中rsync連接埠號碼正確

[root@test etc]# vim /etc/services

rsync           873/tcp                         # rsync

rsync           873/udp                         # rsync

 

5 配置rsync密碼(在上邊的設定檔中已經寫好路徑)/home/rsync.ps(名字隨便寫,只要和上邊設定檔裡的一致即可),格式(一行一個使用者)

[root@test etc]# vi /home/rsync.ps

Mail:abc123

 

6 配置rsync密碼檔案許可權

[root@test home]# chown root.root rsync.ps

[root@test home]# chmod 400 rsync.ps

 

7 啟動配置

[root@test home]# /etc/init.d/xinetd restart

Stopping xinetd:                                           [  OK  ]

Starting xinetd:                                           [  OK  ]

 

8 如果xinetd沒有的話,需要安裝一下

[root@test home]# yum -y install xinetd

 

 

啟動rsync server

RSYNC服務端啟動的兩種方法

9、啟動rsync服務端(獨立啟動)

[root@test home]# /usr/bin/rsync --daemon

 

10、啟動rsync服務端 (有xinetd超級進程啟動)

[root@test home]# /etc/init.d/xinetd reload

 

11  加入rc.local

在各種作業系統中,rc檔案存放位置不盡相同,可以修改使系統啟動時把rsync --daemon載入進去。

[root@test home]# vi /etc/rc.local

/usr/local/rsync –daemon           #加入一行

 

12 檢查rsync是否啟動

[root@test home]# lsof -i :873

COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME

xinetd  4396 root    5u  IPv4 633387       TCP *:rsync (LISTEN)

 

 

 

 

二、配置rsync用戶端同步資料(rpm包安裝rsync及配置)
 

1 配置三個過程就可以了

1.1 設定密碼檔案

1.2 測試rsync執行指令

1.3 將rsync指令放入工作排程(crontab)

[root@aj1 home]# vi /etc/xinetd.d/rsync

 

# default: off

# description: The rsync server is a good addition to an ftp server, as it

#       allows crc checksumming etc.

service rsync

{

disable = yes

socket_type     = stream

wait            = no

user            = root

server          = /usr/bin/rsync

server_args     = --daemon

log_on_failure  += USERID

}

 

1.1  配置密碼檔案  (註:為了安全,設定密碼檔案的屬性為:600。rsync.ps的密碼一定要和Rsync Server密碼設定案裡的密碼一樣)

[root@aj1 home]# vi rsync.ps

Abc123

 

[root@mail home]# chown root.root .rsync.ps   # 注意必須給許可權

[root@mail home]# chmod 600 .rsync.ps         # 必須修改許可權

 

1.2 從伺服器上下載檔案

rsync -avz --password-file=/home/rsync.ps mail@10.100.0.175::backup /home/domains/kidslandchina.com/

[root@mail rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps scihoo@192.168.0.206::backup /home/

 

從本地上傳到伺服器上去

[root@mail rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps /home scihoo@192.168.0.206::backup

 

 

 

 

故障排錯:
1、問題一:rsync: failed to connect to X.X.X.X: No route to host (113)
rsync 傳送備份任務沒成功執行。如下:

rsync: failed to connect to X.X.X.X: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(107) [sender=2.6.8]

 

兩台主機能相互ping通,報錯資訊 卻說 沒有路由到主機!

故障原因:對方沒開機、防火牆阻擋、通過的網路上有防火牆阻擋,都有可能。

解決方案:關閉防火牆,或者把防火牆的tcp udp 的873連接埠開啟,允許rsync通過。

實施方案:

1、防火牆的啟動與停止

# service iptables start / stop

2、允許rsync通過防火牆

為防重啟將規則清除,我將規則直接加到規則設定檔裡邊了(/etc/sysconfig/iptables),如下:

-A INPUT -p tcp -s X.X.X.X --dport 873 -j ACCEPT

注意,這條規則要加在REJECT規則前。

加好後,重啟下 iptables(# service iptables restart)。

 

 

2、問題二:@ERROR: auth failed on module backup

@ERROR: auth failed on module backup

rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

伺服器端該模組(backup)需要驗證使用者名稱密碼,但用戶端沒有提供正確的使用者名稱密碼,認證失敗。提供正確的使用者名稱密碼解決此問題。

在伺服器端/etc/rsyncd.conf中backup模組中指定的使用者名稱,以及密碼檔案,請檢查/home/rsync.ps檔案密碼

相關文章

聯繫我們

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