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

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

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

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

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

Rsync 的特點:shell

  1. 快速:第一次同步時 rsync 會複製所有內容,但在下一次只傳輸修改過的文件。vim

  2. 安全:rsync 容許經過 ssh 協議來加密傳輸數據。安全

  3. 更少的帶寬:rsync 在傳輸數據的過程當中能夠實行壓縮及解壓縮操做,所以可使用更少的帶寬。服務器

  4. 特權:安裝和執行 rsync 無需特別的權限ssh

基本語法: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軟件通常系統都會自帶,若是沒有自帶請自行安裝便可。安裝完畢後咱們開始配置.

大體流程:一、創建配置文件  二、設置權限 三、添加排除的文件夾或文件 四、啓動rsync的daemon mode

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

出現:【rsync: failed to set times on  Operation not permitted (1)】時,必定要考慮目標端的權限問題,設置:

chown -Rh nobody:nobody ./*

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

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

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

四、啓動rsync服務器.
rsync --daemon --config=/etc/rsync/rsyncd.conf

客戶機的配置過程:
一、創建密碼文件並設置600權限。
mkdir /etc/rsync
/etc/rsync/pass.conf
文件內容爲「密碼」。注意,只填密碼,不然會報1530錯誤。
zspassword
chmod 600 /etc/rsync/pass.conf

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

相關文章:

  1. Linux任務先後臺的切換

  2. linux下查找文件find命令詳解

  3. linux下使用lftp

  4. Nginx打開目錄瀏覽功能(autoindex)

相關文章
相關標籤/搜索