使用rsync命令同步資料

來源:互聯網
上載者:User

 考慮到伺服器資料的安全,我考慮增加一台備份伺服器,通過資料同步,達到較好的冗餘。
 linux下有非常好的一個命令rsync可以實現差異備份,下面就說說它的用法:

▲合適系統:紅旗DC 4.1 or 5.0或其他linux、FreeBSD系統
▲測試環境:紅旗DC 5.0

一、通過rsh或ssh命令
 在沒有建立rsync伺服器的情況下,我們可以利用rsync命令直接進行快速的差異備份:

命令格式:
#rsync [option] 源路徑 目標路徑
其中:
[option]:
a:使用archive模式,等於-rlptgoD,即保持原有的檔案許可權
z:表示傳輸時壓縮資料
v:顯示到螢幕中
e:使用遠程shell程式(可以使用rsh或ssh)
--delete:精確儲存副本,源主機刪除的檔案,目標主機也會同步刪除
--include=PATTERN:不排除符合PATTERN的檔案或目錄
--exclude=PATTERN:排除所有符合PATTERN的檔案或目錄
--password-file:指定用於rsync伺服器的使用者驗證密碼

源路徑和目標路徑可以使用如下格式:
rsync://[USER@]Host[:Port]/Path     <--rsync伺服器路徑
[USER@]Host::Path                         <--rsync伺服器的另一種表示形式
[USER@]Host:Path                          <--遠程路徑
LocalPath                                       <--本地路徑

※需要注意的是,來源或目的路徑最少要有一個是本地路徑,如果忽略本地路徑,則只會列出遠端的檔案清單。

例子:

#rsync -ave ssh test:/home/ftp/pub/ /home/ftp/pub/

把源路徑中遠端test機器上的/home/ftp/pub/目錄中的內容,通過rsync同步到本地的/home/ftp/pub/目錄下。
◎小心源路徑結尾時候的/號,尾碼/通知rsync複製該目錄的內容,但不複製目錄本身。例如:

#rsync -ave ssh test:/home/ftp/pub /home/ftp/

則會把pub目錄整個同步到本地/home/ftp/路徑中

#rsync -azv --delete rsync://linuxing@192.168.1.100/blog /var/www/html/

通過linuxing登陸到192.168.1.100中,同步rsync伺服器的blog項到本地的/var/www/html/,並刪除本地上源路徑中不存在的檔案或目錄。
※千萬要注意--delete參數,在使用此參數的時候,建議用絕對路徑指定本地目錄,防止清空目前的目錄。

二、建立rsync伺服器
 當伺服器沒有開通ssh,或備份方沒有ssh許可權的時候,我們可以通過建立rsync伺服器,進行匿名的資料同步。
 要使用rsync服務,需要建立服務端和用戶端:
1、服務端
主設定檔:

#vi /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[test]                                      #rsync區段的設定名稱
path = /var/www/html/test       #需要同步的資料存放路徑
comment =  test folder             #注釋
uid = apache                           #採用什麼身份進行檔案讀取
gid = apache                           #同上,必須是有讀取path許可權的使用者、組
ignore errors                           #忽略錯誤
read only = yes                       #唯讀
list = no                                  #不能列表
auth users = linuxing                #串連rsync服務的帳號
secrets file = /etc/rsyncd.secrets    #指定存放帳號密碼的位置

帳號密碼檔案:

#vi /etc/rsyncd.secrets
#格式:帳號:密碼 (每行一組,帳號和密碼用:號分開)
linuxing:backup

儲存後,需要保證使用者是root,許可權是600

#chown root:root /etc/rsyncd.secrets
#chmod 600 /etc/rsyncd.secrets

啟動服務:
#rsync --daemon

保證開機自動啟動:
修改/etc/xinetd.d/rsync檔案,把其中的disable=yes改為disable=no

#sed -i -e "/disable/{ s/yes/no/ }" /etc/xinetd.d/rsync
#service xinetd.d restart

2、用戶端
 使用用法一中涉及到rsync://的方法即可。
 如果rsync伺服器要求輸入密碼驗證,可以增加--password-file參數:

#rsync -azv --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
#vi /etc/test
#指定訪問密碼
bakcup
#chmod 600 /etc/test

3、定時
  另外,由於rsync用戶端沒有定時功能,我們可以通過在crontab中增加計劃任務實現定時的同步,如:(不要使用-v參數,防止刷屏)

#crontab -e
0 22 * * 1-5 /usr/bin/rsync -az --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
#指定星期一到五,每晚十點整進行同步

三、總結
 使用rsync的優點:可通過ssh進行網路加密傳輸,也可以利用ssh用戶端密鑰建立信任關係。當在兩台電腦之間保持大型、複雜目錄結構的同步時候,比tar或wget等方式都要快。而且可以做到精確同步。

四、附錄
 如果是通過編譯安裝的rsync(如FreeBSD),路徑有點不同:
伺服器的設定檔在:/usr/local/etc/rsyncd.conf
開機檔案:/usr/local/etc/rc.d/rsyncd.sh
命令檔案:/usr/local/bin/rsync
系統啟動託管:/etc/rc.conf(增加rsyncd_enable="YES")

五、參考文章
http://rsync.samba.org/

協助檔案:man rsync 或 man rsyncd.conf

聯繫我們

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