rsync的文件同步,復制,鏡像,增量備份 v1.2

jopen 11年前發布 | 54K 次閱讀 rsync

rsync是一個linux下的:快速,多功能,遠程(本地)文件復制工具。
官方網站:http://rsync.samba.org/
維基百科:http://zh.wikipedia.org/wiki/Rsync

rsync是Unix下的一款應用軟件,它能同步更新兩處計算機的檔案與目錄,并適當利用差分編碼以減少數據傳輸。rsync中一項與其他大部分類似程式或協定中所未見的重要特性是鏡像對每個目標只需要一次傳送。rsync可拷貝/顯示目錄屬性,以及拷貝檔案,并可選擇性的壓縮以及遞歸拷貝。

比如網站搬家只需要使用一行命令,填入系統密碼即可。同步遠程服務器上的文件夾到本地,如果本地有的文件,遠程沒有,則刪除之。
rsync -rave "ssh -p 22 -l root" --delete 192.168.0.200:/www/web/ /www/web/

在常駐模式(daemon mode)下,rsync默認監聽TCP埠873,以原生rsync傳輸協定或者透過遠程shell如RSH或者SSH伺服檔案。SSH情況下,rsync用戶端執行程式必須同時在本地和遠程機器上安裝。

Rsync 的特色:

  1. 快速:第一次同步時 rsync 會復制全部內容,但在下一次只傳輸修改過的文件。
  2. 安全:rsync 允許通過 ssh 協議來加密傳輸數據。
  3. 更少的帶寬:rsync 在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。
  4. 特權:安裝和執行 rsync 無需特別的權限

基本語法:rsync options source destination

源和目標都可以是本地或遠程,在進行遠程傳輸的時候,需要指定登錄名、遠程服務器及文件位置

樣例:

1 在本地機器上對兩個目錄進行同步
rsync -zvr /var/opt/installation/inventory/ /root/temp
參數:

  1. -z 開啟壓縮
  2. -v 詳情輸出
  3. -r 表示遞歸

2 利用 rsync -a 讓同步時保留時間標記

rsync 選項 -a 稱為歸檔模式,執行以下操作

  1. 遞歸模式
  2. 保留符號鏈接
  3. 保留權限
  4. 保留時間標記
  5. 保留用戶名及組名

rsync -azv /var/opt/installation/inventory/ /root/temp/

3 僅同步一個文件

rsync -v /var/lib/rpm/Pubkeys /root/temp/

4 從本地同步文件到遠程服務器

rsync -avz /root/temp/ root@192.168.200.10:/home/root/temp/
就像你所看到的,需要在遠程目錄前加上 ssh 登錄方式,格式為 username@machinename:path

5 同步遠程文件到本地

和上面差不多,做個相反的操作
rsync -avz root@192.168.200.10:/var/lib/rpm /root/temp

同步遠程服務器上的文件夾到本地,如果本地有的文件,遠程沒有,則刪除之。
rsync -rave "ssh -p 22 -l root" --delete 192.168.0.200:/www/web/ /www/web/

6 同步時指定遠程 shell

用 -e 參數可以指定遠程 ssh ,比如用 rsync -e ssh 來指定為 ssh
rsync -avz -e ssh root@192.168.200.10:/var/lib/rpm /root/temp

7 不要覆蓋被修改過的目的文件
使用 rsync -u 選項可以排除被修改過的目的文件
rsync -avzu root@192.168.200.10:/var/lib/rpm /root/temp

8 僅僅同步目錄權(不同步文件)
使用 -d 參數
rsync -v -d root@192.168.200.10:/var/lib/

9 查看每個文件的傳輸進程
使用 – -progress 參數
rsync -avz –-progress root@192.168.200.10:/var/lib/rpm/ /root/temp/

10 刪除在目的文件夾中創建的文件
用 – -delete 參數
rsync -avz – -delete root@192.168.200.10:/var/lib/rpm/

11 不要在目的文件夾中創建新文件
有時能只想同步目的地中存在的文件,而排除源文件中新建的文件,可以使用 – -exiting 參數
rsync -avz –existing root@192.168.1.2:/var/lib/rpm/

12 查看源和目的文件之間的改變情況

用 -i 參數
rsync -avzi root@192.168.200.10:/var/lib/rpm/ /root/temp/
輸出結果中在每個文件最前面會多顯示 9 個字母,分別表示為
> 已經傳輸
f 表示這是一個文件
d 表示這是一個目錄
s 表示尺寸被更改
t 時間標記有變化
o 用戶被更改
g 用戶組被更改

13 在傳輸時啟用包含和排除模式
rsync -avz – -include ‘P*’ – -exclude ‘*’ root@192.168.200.10:/var/lib/rpm/ /root/temp/
14 不要傳輸大文件

使用 – – max-size 參數
rsync -avz – -max-size=’100K’ root@192.168.200.10:/var/lib/rpm/ /root/temp/

15 傳輸所有文件

不管有沒有改變,再次把所有文件都傳輸一遍,用 -W 參數
rsync -avzW root@192.168.200.10:/var/lib/rpm/ /root/temp



使用常駐模式,讓備份服務器自動獲取增量備份。

rsync軟件一般系統都會自帶,如果沒有自帶請自行安裝即可。安裝完畢后我們開始配置.

大致流程:1、建立配置文件  2、設置權限 3、添加排除的文件夾或文件 4、啟動rsync的daemon mode

配置文件:
1、rsync的主配置文件。
/etc/rsync/rsyncd.conf
配置文件內容為:

uid = nobody
gid = nobody
read only = true
transfer logging = true
max connections = 10
slp refresh = 300
hosts allow = 8.8.8.8
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
#log file = /var/log/rsyncd.log
#log format = %h %o %f %l %b

[web]
path = /www/web
comment = Mirror to us backup server
read only = true
list = false
auth users = zhangshan
secrets file = /etc/rsync/pass.conf
#exclude from = /etc/rsync/exclude.txt

[mysql]
path = /www/mysql
comment = Mirror to us MySql backup server
read only = true
list = false
auth users = zhangshan
secrets file = /etc/rsync/pass.conf

2、rsync的驗證密碼配置文件
mkdir /etc/rsync
vim /etc/rsync/pass.conf
填入用戶名密碼
zhangshan:zspassword
設置密碼文件(/etc/rsync/pass.conf)的權限為600
chmod 600 /etc/rsync/pass.conf

3、目錄排除文件
/etc/rsync/exclude.txt
文件內容為:一行一個要排除的目錄
/www/www.abc.com/cache
/www/www.123.com

4、啟動rsync服務器.
rsync --daemon --config=/etc/rsync/rsyncd.conf

客戶機的配置過程:
1、建立密碼文件并設置600權限。
mkdir /etc/rsync
/etc/rsync/pass.conf
文件內容為“密碼”。注意,只填密碼,否則會報1530錯誤。
zspassword
chmod 600 /etc/rsync/pass.conf

2、啟動客戶端
rsync -avzP --delete --password-file=/etc/rsync/pass.conf zhangshan@8.8.8.8::web /www/mirror
命令說明:同步服務器web模塊中配置的目錄到本地目錄的/www/mirror,如果本地沒有的文件,這復制過來。如果本地和服務器的文件一致,則不復制。如果本地文件較舊或者較新,這替換掉本地的文件。

原文地址:http://www.huzs.net/?p=920

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!