Linux系統下如何使用rsync進行資料同步 釋出時間:2008.01.30 06:33 來源:賽迪網 作者:sixth首先安裝Rsync,比如在Redhat Fedora Linux上或者RHEL AS3上: rpm -ivh rsync-2.5.7-5.3E.i386.rpm 安裝完成。 rsync用戶端和伺服器端都是同一個執行檔案,隻不過加的參數不一樣。 例如,伺服器A是192.168.0.100,伺服器B是192.168.0.101,例如将101上的/www/downloads/new目錄下的檔案同步到192.168.0.100的/www/download目錄下,則100上運作rsync作為伺服器端,101做為用戶端。 首先把192.168.0.100伺服器端的配置檔案建立起來。 vi /etc/rsyncd.conf 内容如下: uid = nobody gid = nobody use chroot = yes max connections = 4 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [downloads] path = /www/downloads/ ignore errors read only = false list = false hosts allow = 192.168.0.101/24 hosts deny = 0.0.0.0/32 auth users = backup secrets file = /etc/rsyncd.pwd 找個配置檔案中,uid和gid指明了運作身份,chroot表示連接配接後自動切換目錄,read only=false是允許别的用戶端向本機的伺服器端上傳。host allow和deny是限制連接配接位址。auth user是認證使用者名,secrets file = /etc/rsyncd.pwd是表示認證使用者名的時候到這裡讀取密碼。 接下來編輯密碼檔案: vi /etc/rsyncd.pwd backup:123456 設定密碼檔案權限700:(權限不對會登陸不上) chmod 700 /etc/rsyncd.pwd 然後啟動rsync服務: /usr/bin/rsync --daemon 把rsync加入自動啟動腳本,開機後自動啟動: echo "/usr/bin/rsync --daemon" >> /etc/rc.d/rc.local 注意一下iptables必須允許rsync的873端口被連接配接。 現在到192.168.0.101的用戶端上,指令格式如下: rsync [-參數] 源位址路徑 目标位址路徑 例如将101上的/www/downloads/new目錄下的檔案同步到192.168.0.100的/www/downloads目錄中。 則建立執行腳本: vi /root/rsync.sh rsync -vrtL --progress \ /www/downloads/new/* \ [email protected]::downloads \ --password-file=/root/rsync.pwd -v參數表示顯示輸出結果,r表示保持屬性,t表示保持時間,L表示軟link視作普通檔案。 建立用戶端的密碼檔案: vi /root/rsync.pwd 123456 注意:用戶端的密碼腳本不帶使用者名。 設定密碼檔案權限700:(權限不對會登陸不上) chmod /root/rsync.pwd 将用戶端腳本加入定期任務: echo "00 3 * * * root /usr/prima/etc/rsync.sh" >> /etc/crontab 則每天淩晨3點運作同步。 現在可以直接運作 /root/rsync.sh 觀看效果。 簡單的rsync配置完成。
<b>Rsync簡介 rsync-2.6.8-1.el4.rf.i386.rpm</b>
rsync是一個遠端資料同步工具,可通過LAN/WAN快速同步多台主機間的檔案。 rsync 本來是用以取代 rcp 的一個工具, 它目前是由 rsync.samba.org 維護. rsync 使用所謂的 "rsync 演算法", 提供一個非常快速的檔案傳輸方法, 使 local 和遠端二部主機之間的檔案達到同步, 它主要是傳送二個檔案的不同部份, 而非每次都整份傳送, 是以速度相當地快. 運作rsync server的機器也就是backup server,1台rsync server可同時備份多個client的資料;也可以多個rsync備份1個client的資料。 rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。 Rsync server會打開一個 873 的服務通道(port), 等待對方 rsync 連接配接. 連接配接時, rsync Server 會檢查密碼是否相符, 若通過密碼查核, 則開始進行檔案傳輸. 第一次連通完成時, 會把整份檔案傳輸一次, 下一次就隻傳送二個檔案之間不同的部份.
Rsync client可以是類unix主機也可以是windows主機(需配合Sync2NAS使用)。
基本特色1。可以鏡像儲存整個目錄樹和檔案系統。 2。可以很容易做到保持原來檔案的權限、時間、軟硬連結等等。 3。無須特殊權限即可安裝。 4。優化的流程,檔案傳輸效率高。 5。可以使用rcp、ssh等方式來傳輸檔案,當然也可以通過直接的socket連接配接。 6。支援匿名傳輸。
rsync執行個體用法- -
<a href="http://batc.bao.ac.cn/cgi-bin/leobbs/cgi-bin/topic.cgi?forum=2&topic=7&show=0" target="_blank">http://batc.bao.ac.cn/cgi-bin/leobbs/cgi-bin/topic.cgi?forum=2&topic=7&show=0</a>
vi /etc/xinetd.d/rsync
disable = yes
改成
disable = no
rsyncd.conf 是rsyncd的config檔案
vi /etc/rsyncd.conf
#uid = nobody
#gid = nobody
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[compshop]
path = /home/sites/compshop
auth users = compshop
uid = compshop
gid = compshop
secrets file = /etc/rsyncd.secrets
read only = no
[datafeed]
path = /home/sites/datafeed
auth users = datafeed
uid = datafeed
gid = datafeed
[smtemplates]
path = /home/sites/smtemplates
auth users = smtemplates
uid = smtemplates
gid = smtemplates
[smarterv2]
path = /home/sites/smarterv2
auth users = smarterv2
uid = smarterv2
gid = smarterv2
rsyncd.secrets是rsyncd的密碼檔案,裡面是寫使用者名和密碼,就是linux的使用者名和密碼
vi /etc/rsyncd.secrets
compshop:any
datafeed:any
smtemplates:any
smarterv2:any
以上是伺服器端的配置,開了這個服務以後,端口是873
以下是客服端的配置檔案,是在另外一台電腦上的。檔案名是可以自己改的。
vi /home/sites/sites_rsyncd
#!/bin/bash
rsync -tvzrp --progress --password-file=/home/sites/rsyncd.secrets --delete --exclude
chmod 744 /home/sites/sites_rsyncd
vi /home/sites/rsyncd.secrets
any
chmod 600 /home/sites/rsyncd.secrets
三、rsync指令的用法
在配置完rsync伺服器後,就可以從用戶端發出rsync指令來實作各種同步的操
作。rsync有很
多功能選項,下面就對介紹一下常用的選項:
rsync的指令格式可以為:
1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
2. rsync [OPTION]... [USER@]HOST:SRC DEST
3. rsync [OPTION]... SRC [SRC]... DEST
4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
6. 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傳輸,不過隻要在指令中省略掉本地機信
息即可。
下面以執行個體來說明:
v詳細提示
a以archive模式操作,複制目錄、符号連接配接
z壓縮
u隻進行更新,防止本地新檔案被重寫,注意兩者機器的時鐘的同時
-progress指顯示
以上指令是保持客戶機192.168.100.90上的/home/terry目錄和rsync伺服器上的terry目
錄同
步。該指令執行同步之前會要求你輸入terry賬号的密碼,這個賬号是我們前面
在rsyncd.secrets
檔案中定義的。如果想将這條指令寫到一個腳本中,然後定時執行它的話,可以使
用--password-file
選項,具體指令如下:
# rsync -vazu -progress --password-file=/etc/rsync.secret
要使用--password-file選項,就得先建立一個存放密碼的檔案,這裡指定
為/etc/rsync.secret。
其内容很簡單,如下:
terry:12345
同樣要修改檔案屬性如下:
# chmod 600 /etc/rsyncd.secrets
四、利用rsync保持Linux伺服器間的檔案同步執行個體
現在假設有兩台Linux伺服器A(192.168.100.21)和B(192.168.100.90),伺服器A中的
/home/terry和伺服器B中的/home/terry這兩個目錄需要保持同步,也就是當伺服器A中文
件發生
改變後,伺服器B中的檔案也要對應去改變。
我們按上面的方法,在伺服器A上安裝rsync,并将其配置為一台rsync伺服器,并
将/home/terry
目錄配置成rsync共享出的目錄。然後在伺服器B上安裝rsync,因為B隻做用戶端,是以
無需配置。
然後在伺服器B,建立以下腳本:
#!/bin/bash
/usr/loca/rsync/bin/rsync -vazu -progress --delete
将這個腳本儲存為AtoB.sh,并加上可執行屬性:
# chmod 755 /root/AtoB.sh
然後,通過crontab設定,讓這個腳本每30分鐘運作一次。執行指令:
# crontab -e
輸入以下一行:
0,30 * * * * /root/AtoB.sh
儲存退出,這樣伺服器B每個小時的0分和30分時都會自動運作一
次AtoB.sh,AtoB.sh是負責
保持伺服器B和伺服器A同步的。這樣就保證了伺服器A的所有更新在30鐘後,伺服器B
也一樣取得了和伺服器A一樣的最新的資料。