rsync ssh數據同步


1.rsync和ssh差異遠程同步命令

 1 命令格式:
 2 #rsync [option] 源路徑 目標路徑
 3 其中:
 4 [option]:
 5 a:使用archive模式,等於-rlptgoD,即保持原有的文件權限
 6 z:表示傳輸時壓縮數據
 7 v:顯示到屏幕中
 8 e:使用遠程shell程序(可以使用rsh或ssh)
 9 --delete:精確保存副本,源主機刪除的文件,目標主機也會同步刪除
10 --include=PATTERN:不排除符合PATTERN的文件或目錄
11 --exclude=PATTERN:排除所有符合PATTERN的文件或目錄
12 --password-file:指定用於rsync服務器的用戶驗證密碼
13 
14 源路徑和目標路徑可以使用如下格式:
15 rsync://[USER@]Host[:Port]/Path     <--rsync服務器路徑
16 [USER@]Host::Path                         <--rsync服務器的另一種表示形式
17 [USER@]Host:Path                          <--遠程路徑
18 LocalPath                                       <--本地路徑

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

例子:

mkdir test_new;  //本地建立一個測試目錄

ssh ljz@192.168.1.109:/home/ljz/test/  //這個是svn服務器中的賬戶目錄

將svn上test目錄下的內容更新到本地test_new目錄下

rsync -ave ssh  ljz@192.168.1.109:/home/ljz/test/ /home/ljz/test_new/  

※需要注意的是,如果是/home/ljz/test/表示是test目錄下的所有內容,/home/ljz/test表示連同這個目錄已經目錄下的所有內容

將本地內容同步到遠程目錄?

rsync -ave ssh /home/ljz/test_new/  ljz@192.168.1.109:/home/ljz/test/ 

 

1#rsync -avz --delete ljz@192.168.1.109:/home/ljz/test/ /home/ljz/New_Test/

將109上的test目錄內容同步到本地的New_Test目錄,並刪除本地上源路徑中不存在的文件或目錄。
※千萬要注意--delete參數,在使用此參數的時候,建議用絕對路徑指定本地目錄,防止清空當前目錄。

二、建立rsync服務器
 當服務器沒有開通ssh,或備份方沒有ssh權限的時候,我們可以通過建立rsync服務器,進行匿名的數據同步。
 要使用rsync服務,需要建立服務端和客戶端:
1、服務端
主配置文件:

 1 #vi /etc/rsyncd.conf
 2 log file = /var/log/rsyncd.log
 3 pid file = /var/run/rsyncd.pid
 4 lock file = /var/run/rsync.lock
 5 [test]                                      #rsync區段的設定名稱
 6 path = /var/www/html/test       #需要同步的數據存放路徑
 7 comment =  test folder             #注釋
 8 uid = apache                           #采用什么身份進行文件讀取
 9 gid = apache                           #同上,必須是有讀取path權限的用戶、組
10 ignore errors                           #忽略錯誤
11 read only = yes                       #只讀
12 list = no                                  #不能列表
13 auth users = linuxing                #連接rsync服務的帳號
14 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")

 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM