閱讀829 返回首頁    go 中電雲集


使用rsync同步

一. 簡介

rsync常用的備份工具, 它目前是由 rsync.samba.org 維護.

rsync使用所謂的”rsync算法”,提供一個非常快速的檔案傳輸方法, 使local和遠端二部主機之間的檔案達到同步,它主要是傳送二個檔案的異動部份,而非每次都整份傳送, 因此速度相當地快. rsync它可以搭配rsh或ssh,也可以當成daemon模式使用直接的socket連接, 所以rsync可以當做一個優異的備份工具來使用.

我這簡單介紹運用rsync備份遠程網路主機檔案的基本方法。在這,我們是給rsync當成linux的一種daemon模式來運行.

首先,先給個簡單的定義:當然要一台主機跑rsync daemon模式, 我們就稱這台機器為一rsync Server, 或者說這台主機是一台備份主機( Backup Server).備份主機會開啟一個873的端口(port), 等待對方rsync連接.所以服務器記的要開這個端口連接時, rsync Server 會檢查密碼是否相符, 若通過密碼查核, 則開始進行檔案傳輸.第一次連通完成時, 會把整份檔案傳輸一次, 下一次就隻傳送二個檔案之間異動的部份.

以上是rsync client (欲加以備份的遠程網路主機) 和rsync server 的運作方式。

藉由上述方法, 我們當然也可以設立多部備份主機, 使網路主機上重要的檔案能分散至數部主機中, 以分散風險.

一旦完成備份, 我們可以對這些備份主機再做進一步的儲存動作, 如使用tar打成tar的包, 把檔案備份到硬盤之類.

以下內容,我用Ubuntu 7.10做客戶機,Centos5做服務器測試過.

二. 安裝法

rsync目前最新版是 2.6.8, 可以到rsync.samba.org 下載.若您使用 rpm 套件,請用下麵的方法安裝,當然rhel5和centos5中默認就安裝了

#rpm -ivh rsync*.rpm

#yum install rsync

它的設定檔位置在 /etc/rsyncd.conf,奇怪,我的沒有自動生成這個文件,那我們就來自己配置他

三. 設定 rsync server: (假設這台主機名稱為 rsync.x111.com)

rsync server 端要設定以下四項:

(1.規劃建立備份目錄區

(2.啟動xinetd中的rsync

(3.設定: /etc/rsyncd.conf

(4.設定: 密碼檔

依次說明如下:

1. 規劃建立備份目錄區:

建議您準備一個容量較大且獨立的分割區, 並在其中開好備份目錄, 如此 /blackup/x99

2. 啟動xinetd中的rsync

係統默認沒有安裝xinetd。

# yum install xinetd

#service xinetd restart

#chkconfig rsync on

以上的操作,主要是要打開rsync這個daemon,一旦有rsync client要連接時,xinetd會把它轉介給rsyncd (port 873).

3. 設定 /etc/rsyncd.conf :

全局設置

uid = root

gid = root

use chroot = no # 不使用chroot

max connections = 4 # 最大連接數為4

hosts allow = 192.168.100.90     #哪些電腦可以訪問rsync服務

hosts deny = 192.168.100.0/24  #哪些電腦不能連接

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log # 日誌記錄文件

以下的部分,代表開放給某一台rsync client 主機的設定, 簡單範本如下:

[x99]

path = /blackup/x99/x99_backup

auth users = x99_backup

secrets file = /etc/rsyncd.secrets

read only = no

以上文件的注解:

[x99] 代表要備份的主機代號, 名稱自己設置.

path 用來設定備份檔案要存放在那一個目錄.這個可先要mkdir開好,可以自己設置auth users 代表授權的帳號, 可以自己設置.

secrets file 代表儲存帳號密碼的密碼檔, 其放置的路徑檔名.

當然, 這台備份主機, 可以容納許多 rsync client 連接, 隻要在 rsyncd.conf中設置對應的多個部分即可.

以下例子,代表二個主機x99及x100欲備份進來:

[x99]

path = /blackup/x99/x99_backup

comment = XXXXX

auth users = x99_backup

secrets file = /etc/rsyncd.secrets

read only = no

[x100]

path = /blackup/x100/x100_backup

auth users = x100_backup

secrets file = /etc/rsyncd.secrets

read only = no

4. 設定密碼文件:

rsyncd.secrets 的內容很容易, 格式為”帳號:密碼”;

如以下例子:

x99_backup:x99pass

注意! 上述設定隻是一個例子,你自己設置可一定千萬不要直接套用.

接下來, 要將 rsyncd.secrets 這個密碼檔的檔案屬性設為root擁有, 且權限要設為600, 否則無法備份成功!

因此, 請下:

#chown root.root rsyncd.secrets

#chmod 600 rsyncd.secrets

至此, rsync的服務器這端已設定完成, 若欲查看備份日誌.

#tail -f /var/log/rsyncd.log

接下來是 client 端(即欲備份的網路主機) 的設定.

四. 設定 rsync client (假設這台主機 IP 為 : 11.22.33.44)

步驟:

1.設定密碼檔

2.測試rsync命令是否可以正常

3.將rsync指令放入定時任務(crontab)

另外, 假設x99這台主機是網路上的服務器, 現打算把/var/www/html這個目錄加以備份至backup server(上麵講的rsync.x111.com), 但不想備份下麵的目錄中的內容/html/log,(也就是說要把/html/log目錄排除), 整個操作方式如下:

1. 假設把密碼檔放在 /root/rsyncd.secrets, 內容隻要含有密碼一行即可:

x99pass

注意: rsyncd.secrets 的權限屬性必須設為600,設置方法見上麵.

2. 測試指令是否可以成功?

/usr/bin/rsync -rvztopglHpogDtS –progress –password-file=/root/rsyncd.secrets /var/www/html –exclude /html/log x99_backup@rsync.x111.com::x99

若出現傳輸目錄檔案的畫麵, 即表示測試成功.上麵這個命令行中-rv裏的v是verbose,z是壓縮,r是遞歸,字目錄一直,topg都是保持文件原有屬性如屬主、時間的參數。- -progress是指顯示出詳細的進度情況,–delete是指如果服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致。後麵的 x99_backup@ip中,的x99_backup是指的用戶名

3. 置入工作排程, 假設每天淩晨5點開始備份:

crontab -u root -e

0 5 * * * /usr/bin/rsync -rvlHpogDtS –password-file=/root/rsyncd.secrets /var/www/html –exclude apache /html/log x99_backup@rsync.x111.com::x99

若您有其它目錄(如 /home)要備份, 則如法泡製:

20 5 * * * /usr/bin/rsync -rvlHpogDtS –password-file=/root/rsyncd.secrets /home x99_bakup@rsync.x111.com::x99

當然您覺得備份一台Backup Server不夠,還可再按上述方法,自行增加任意多台Backup Server, 以分散風險!

五. 安全性:

防火牆的 iptables 指令, 來限製 rsync client 的連線範圍, 例子如下:

iptables -A INPUT -p tcp -s ! xx.xx.xx.xx –dport 873 -j DROP

如此, 隻有 xx.xx.xx.xx 這個 client IP 能連入這台 rsync server.

附:

詳細格式說明:

-v, –verbose 詳細模式輸出

-q, –quiet 精簡輸出模式

-c, –checksum 打開校驗開關,強製對文件傳輸進行校驗

-a, –archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD,這樣會複製目錄中所有的文件和目錄

-r, –recursive 對子目錄以遞歸模式處理

-R, –relative 使用相對路徑信息

-b, –backup 創建備份,也就是對於目的已經存在有同樣的文件名時,將老的文件重新命名為

~filename。可以使用–suffix選項來指定不同的備份文件前綴。

–backup-dir 將備份文件(如~filename)存放在在目錄下。

-suffix=SUFFIX 定義備份文件前綴

-u, –update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件。

(不覆蓋更新的文件)

-l, –links 保留軟鏈結

-L, –copy-links 想對待常規文件一樣處理軟鏈結

–copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結

–safe-links 忽略指向SRC路徑目錄樹以外的鏈結

-H, –hard-links 保留硬鏈結

-p, –perms 保持文件權限

-o, –owner 保持文件屬主信息

-g, –group 保持文件屬組信息

-D, –devices 保持設備文件信息

-t, –times 保持文件時間信息

-S, –sparse 對稀疏文件進行特殊處理以節省DST的空間

-n, –dry-run現實哪些文件將被傳輸

-W, –whole-file 拷貝文件,不進行增量檢測

-x, –one-file-system 不要跨越文件係統邊界

-B, –block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節

-e, –rsh=COMMAND 指定替代rsh的shell程序

–rsync-path=PATH 指定遠程服務器上的rsync命令所在路徑信息

-C, –cvs-exclude 使用和CVS一樣的方法自動忽略文件,用來排除那些不希望傳輸的文件

–existing 僅僅更新那些已經存在於DST的文件,而不備份那些新創建的文件

–delete 刪除那些DST中SRC沒有的文件,這個不會刪除任何源數據

–delete-excluded 同樣刪除接收端那些被該選項指定排除的文件

–delete-after 傳輸結束以後再刪除

–ignore-errors 及時出現IO錯誤也進行刪除

–max-delete=NUM 最多刪除NUM個文件

–partial 保留那些因故沒有完全傳輸的文件,以是加快隨後的再次傳輸

–force 強製刪除目錄,即使不為空

–numeric-ids 不將數字的用戶和組ID匹配為用戶名和組名

–timeout=TIME IP超時時間,單位為秒

-I, –ignore-times 不跳過那些有同樣的時間和長度的文件

–size-only 當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間

–modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,默認為0

-T –temp-dir=DIR 在DIR中創建臨時文件

–compare-dest=DIR 同樣比較DIR中的文件來決定是否需要備份

-P 等同於 –partial –progress 顯示備份過程

-z, –compress 對備份的文件在傳輸時進行壓縮處理

–exclude=PATTERN 指定排除不需要傳輸的文件模式

–include=PATTERN 指定不排除而需要傳輸的文件模式

–exclude-from=FILE 排除FILE中指定模式的文件

–include-from=FILE 不排除FILE指定模式匹配的文件

–version 打印版本信息

–address 綁定到特定的地址

–config=FILE 指定其他的配置文件,不使用默認的rsyncd.conf文件

–port=PORT 指定其他的rsync服務端口

–blocking-io 對遠程shell使用阻塞IO

-stats 給出某些文件的傳輸狀態

–progress 在傳輸時現實傳輸過程

–log-format=FORMAT 指定日誌文件格式

–password-file=FILE 從FILE中得到密碼

–bwlimit=KBPS 限製I/O帶寬,KBytes per second

-h, –help 顯示幫助信息

最後更新:2017-01-04 22:34:32

  上一篇:go 會員常見問題
  下一篇:go sarg 安裝與使用