rsync是Linux系統下的資料鏡像備份工具,從軟體的命名上就可以看出來了——remote sync。rsync支援大多數的類Unix系統,無論是Linux、Solaris還是BSD上都經過了良好的測試。rsync的最新版本可以從 http://rsync.samba.org/rsync/獲得。它的特性如下:
1、可以鏡像儲存整個分類樹和檔案系統。
2、可以很容易做到保持原來檔案的許可權、時間、軟永久連結等等。
3、無須特殊許可權即可安裝。
4、最佳化的流程,檔案傳輸效率高。
5、可以使用rcp、ssh等方式來傳輸檔案,當然也可以通過直接的socket串連。
本文介紹了如何使用rsync服務從Linux到Windows和linux進行遠程備份
一、設定管理員端
軟體下載
rysnc的首頁地址為:http://rsync.samba.org/,可以從這裡下載rysn的安裝軟體。
編譯安裝
rsync的編譯安裝非常簡單,只需要以下簡單的幾步(在兩台伺服器中都要安裝):
$ tar xvf rsync-2.6.3.tgz
$ cd rsync-2.6.3
$ ./configure
$ make
$ make install
但是需要注意的是必須在主伺服器和同步伺服器上都安裝rsync,其中主伺服器上是以伺服器模式運行rsync,而同步上則以用戶端方式運行rsync。這樣在主伺服器上運行rsyn守護進程,在同步上用crond定時運行客戶程式來同步主伺服器上需要同步的內容。
配置rsync伺服器端
對 於rsync伺服器來說,最重要和複雜的就是它的配置了。rsync伺服器的設定檔為/etc/rsyncd.conf,其控制認證、訪問、日誌記錄等 等。該檔案是由一個或多個模組結構組成。一個模組定義以方括弧中的模組名開始,直到下一個模組定義開始或者檔案結束,模組中包含格式為name= value的參數定義。每個模組其實就對應需要備份的一個分類樹,比方說在我們的執行個體環境中,有三個分類樹需要備份:/www/和 /mirror/file0/和/mirror/file1/目錄,那麼就需要在設定檔中定義三個模組,分別對應三個分類樹。設定檔是行為單位的,也 就是每個新行都表示一個新的注釋、模組定義或者參數賦值。
例如,在168上建立rsyncd的設定檔/etc/rsyncd.conf,內容如下:
uid = nobody # 備份以什麼身份進行,使用者ID
gid = nobody # 備份以什麼身份進行,組ID
#注意這個使用者ID和組ID,如果要方便的話,可以設定成root,這樣rsync幾乎就可
#以讀取任何檔案和目錄了,但是也帶來安全隱患。建議設定成只能讀取你要備
#份的目錄和檔案即可。
#use chroot = no
max connections = 0 # 最大串連數沒有限制
pid file = /var/log/rsync/rsyncd.pid
lock file = /var/log/rsync/rsync.lock
log file = /var/log/rsync/rsyncd.log
[attachment] # 指定認證的備份模組名
path = /www/htdocs/pub/attachment/ # 需要備份的目錄
comment = BACKUP attachment # 注釋
ignore errors # 忽略一些無關的IO錯誤
read only = false # 設定為非唯讀
list = false # 不允許列檔案
#hosts allow = 210.51.0.80 #允許串連伺服器的主機IP地址
#hosts deny = 0.0.0.0/0.0.0.0 #禁止串連伺服器的主機IP地址
auth users = msyn # 認證的使用者名稱,如果沒有這行,則表明是匿名
secrets file = /etc/rsyncd.scrt # 認證檔案名稱,用來存放密碼
[98htdocs]
uid = nobody
gid = nobody
path = /www/htdocs/
#ignore errors
read only = false
list = false
#hosts allow = 210.51.0.98
#hosts deny = 202.108.211.38
#hosts deny = 0.0.0.0/0.0.0.0
auth users = msyn
secrets file = /etc/rsyncd.scrt
[98html]
uid = ejbftp
gid = nobody
path = /www/htdocs/pub/html/
#ignore errors
read only = false
list = false
#hosts allow = 210.51.0.98
#hosts deny = 0.0.0.0/0.0.0.0
auth users = 98syn
secrets file = /etc/rsync98.scrt
這 裡分別定義了[attachment]、[98htdocs]、[98html]三個模組,分別對應於三個需要備份的目樹。三個模組授權的備份使用者分別為 msyn,msyn,98syn,使用者資訊儲存在檔案/etc/rsyncd.scrt和/etc/rsync98.scrt中,其內容如下:
[root@www /etc]# cat /etc/rsyncd.scrt
msyn:xxxxxxxxx
並且該檔案只能是root使用者可讀寫的,注意,出於安全目的,這個檔案的屬性必需是只有屬主可讀,否則rsync將拒絕運行。我們可以設定它的屬性為600:
[root@www /etc]# chmod 600 /etc/rsyncd.scrt
這些檔案配置完畢以後,就需要在主伺服器上啟動rsyncd服務:
[root@www /etc]# /usr/local/bin/rsync --daemon
執行完畢上面的命令後,rsync即可啟動。rsync預設服務連接埠為873,伺服器在該連接埠接收客戶的匿名或者認證方式的備份請求。
二、配置用戶端
1、linux下執行rsync用戶端命令
下一步就要運行rsync用戶端的啟動命令了:
[backup@backup /] /usr/bin/rsync -vlzrtogp --progress --delete 98syn@x.x.x.168::98html /usr/local/apache/htdocs/pub/html/ --password-file=/etc/rsync98.scrt
上 面這個命令列中-vzrtopg裡的v是代表verbose(詳細),z是代表zip(壓縮),r是代表recursive(遞迴),topg都是保持文 件原有屬性如屬主、時間的參數。--progress是指顯示出詳細的進度情況,--delete是指如果伺服器端刪除了這一檔案,那麼用戶端也相應把文 件刪除,保持真正的一致。
98syn@x.x.x.168::98html 是表示該命令是對伺服器x.x.x.168中的98html模組進行備份,其中98syn表示使用98syn使用者來對該模組進行備份。-- password-file=/etc/rsync98.scrt來指定密碼檔案,這樣就可以在指令碼中使用而無需互動式地輸入驗證密碼了,這裡需要注意的 是這份密碼檔案許可權屬性要設得只有執行這個命令的目前使用者可讀,本例中是98syn使用者。 這裡將備份的內容存放在備份機的/usr/local/apache/htdocs/pub/html/目錄下。
這樣,rsync同步服務就搭建好了,最後我們可以將在用戶端執行的命令通過crontab定時執行來實現自動備份,或者寫一些指令碼,這樣rsync同步服務的搭建就更加完美了。
2、Windows配置用戶端
為了在Windows環境使用rsync工具,我們需要去下載cwRsync工具,這是一個rsync for windows的版本。
現在我們可以在Windows環境下運行rsync工具了,舉例使用下面的命令串連伺服器並開始備份目錄和檔案:
rsync -vzrtopg --progress --delete 98syn@xx.xx.xx.xx::98html .\bak\
應該可以看到:
password:
要求輸入密碼的提示,正確輸入密碼後就應該看到開始備份了。
引起這種錯誤有幾種可能性,一是你沒有輸入正確的使用者名稱或密碼,二是你的伺服器端儲存密碼的檔案沒有正確的許可權,也就是你的密碼檔案不是類似這樣子的許可權:
-rw------- 1 root root
可以採用從檔案讀取密碼的方式:
rsync -vzrtopg --progress --delete 98syn@xx.xx.xx.xx::98html .\bak\ --password-file=.\rsync98.scrt
可以寫成批處理,做到windows計劃任務裡面去,可以定時執行來實現自動備份。
你也可以在這裡下載cwRsync-1.2.8版:cwRsync_1.2.8_Installer.exe