天天看點

Rsync的安裝與配置

首先是服務端的配置:

安裝xinetd服務以及rsync軟體包

vim /etc/xinetd.d/rsync

代碼如下:

service rsync

{

       disable = yes

       socket_type     = stream

       wait            = no

       user            = root

       server          = /usr/bin/rsync

       server_args     = --daemon

       log_on_failure  += USERID

}

将disable=yes改為no後,重新開機xinetd服務

/etc/init.d/xinetd restart

注意:如果服務端裝有防火牆 ,需要打開端口,rsync的預設端口為873

iptables -A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 873 -j ACCEPT

iptables -A INPUT -p tcp -m tcp --dport 873 -j DROP

配置rsync的配置檔案

首先,rsync的配置檔案需要手動寫入:

vim /etc/rsyncd.conf

具體内容:

uid = root 

gid = root 

use chroot = no 

max connections = 100 

strict modes =yes 

port = 873 

pid file = /var/run/rsyncd.pid 

lock file = /var/run/rsync.lock 

log file = /var/log/rsyncd.log 

transfer logging = yes 

motd file = /etc/rsyncd.motd 

secrets file = /etc/rsync.pas

[mode] 

path = /backup/mode

ignore errors 

read only = no 

list = yes 

auth users = alca

hosts allow = 192.168.3.0/255.255.255.0 

hosts deny = 0.0.0.0/0 

[test] 

uid = test 

gid = test 

path = /backup/test 

hosts allow = 192.168.0.0/255.255.0.0 

注釋:

comment

給子產品指定一個描述,該描述連同子產品名在客戶連接配接得到子產品清單時顯示給客戶。預設沒有描述定義。

path

指定該子產品的供備份的目錄樹路徑,該參數是必須指定的。

use chroot

如 果”use chroot”指定為true,那麼rsync在傳輸檔案以前首先chroot到path參數所指定的目錄下。這樣做的原因是實作額外的安全防護,但是缺點是需要以roots權限,并且不能備份指向外部的符号連接配接所指向的目錄檔案。預設情況下chroot值為true。

uid

該選項指定當該子產品傳輸檔案時守護程序應該具有的uid,配合gid選項使用可以确定哪些可以通路怎麼樣的檔案權限,預設值是”nobody”。

gid

該選項指定當該子產品傳輸檔案時守護程序應該具有的gid。預設值為”nobody”。

max connections

指定該子產品的最大并發連接配接數量以保護伺服器,超過限制的連接配接請求将被告知随後再試。預設值是0也就是沒有限制。

list

該選項設定當客戶請求可以使用的子產品清單時,該子產品是否應該被列出。如果設定該選項為false,可以建立隐藏的子產品。預設值是true。

read only

該選項設定是否允許客戶上載檔案。如果為true那麼任何上載請求都會失敗,如果為false并且伺服器目錄讀寫權限允許那麼上載是允許的。預設值為true。

exclude

用 來指定多個由空格隔開的多個檔案或目錄(相對路徑),并将其添加到exclude清單中。這等同于在用戶端指令中使用–exclude來指定模式,一個 子產品隻能指定一個exclude選項。但是需要注意的一點是該選項有一定的安全性問題,客戶很有可能繞過exclude清單,如果希望確定特定的檔案不能 被通路,那就最好結合uid/gid選項一起使用。

exclude from [file]

指定一個包含exclude模式的定義的檔案名,伺服器從該檔案中讀取exclude清單定義。

include

用來指定不排除符合要求的檔案或目錄。這等同于在用戶端指令中使用–include來指定模式,結合include和exclude可以定義複雜的exclude/include規則。

include from [file]

指定一個包含include模式的定義的檔案名,伺服器從該檔案中讀取include清單定義。

auth users

該選項指定由空格或逗号分隔的使用者名清單,隻有這些使用者才允許連接配接該子產品。這裡的使用者和系統使用者沒有任何關系。如果”auth users”被設定,那麼用戶端發出對該子產品的連接配接請求以後會被rsync請求challenged進行驗證身份這裡使用的 challenge/response認證協定。使用者的名和密碼以明文方式存放在”secrets file”選項指定的檔案中。預設情況下無需密碼就可以連接配接子產品(也就是匿名方式)。

secrets file

該選項指定一個包含定義使用者名:密碼對的檔案。隻有在”auth users”被定義時,該檔案才有作用。檔案每行包含一個username:passwd對。一般來說密碼最好不要超過8個字元。沒有預設的 secures file名,需要限式指定一個(例如:/etc/rsyncd.passwd)。注意:該檔案的權限一定要是600,否則用戶端将不能連接配接伺服器

strict modes

該選項指定是否監測密碼檔案的權限,如果該選項值為true那麼密碼檔案隻能被rsync伺服器運作身份的使用者通路,其他任何使用者不可以通路該檔案。預設值為true。

hosts allow

該選項指定哪些IP的客戶允許連接配接該子產品。客戶模式定義可以是以下形式:單個IP位址,例如:192.167.0.1

hosts deny

指定不允許連接配接rsync伺服器的機器,可以使用hosts allow的定義方式來進行定義。預設是沒有hosts deny定義。

ignore errors

指定rsyncd在判斷是否運作傳輸時的删除操作時忽略server上的IO錯誤,一般來說rsync在出現IO錯誤時将将跳過–delete操作,以防止因為暫時的資源不足或其它IO錯誤導緻的嚴重問題。

lock file

指定支援max connections參數的鎖檔案,預設值是/var/run/rsyncd.lock。

timeout

通過該選項可以覆寫客戶指定的IP逾時時間。通過該選項可以確定rsync伺服器不會永遠等待一個崩潰的用戶端。逾時機關為秒鐘,0表示沒有逾時定義,這也是預設值。對于匿名rsync伺服器來說,一個理想的數字是600。

dont compress

用來指定那些不進行壓縮處理再傳輸的檔案,預設值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

motd file

指定顯示給用戶端連接配接時的資訊檔案

[mode]是認證子產品名和 path = /backup/mode 是參與同步的目錄

這裡的path 大家要記好了,這裡不要随便的一設定就直接完事,要知道這裡是認證子產品的,以後從客戶機備份的資料會存儲在這裡。

編寫密碼檔案:

vim /etc/rsyncd.pas

root:12345678 #使用者名:密碼

給予隻讀權限

chown root:root /etc/rsyncd.pas

chmod 600 /etc/rsyncd.pas

建立目錄并修改所有者

# mkdir -p /backup/mode

# chown -R root.root  /backup/mode

啟動服務

rsync --daemon

echo "rsync --daemon" >> /etc/rc.local

用戶端進行同步隻需要安裝rsync,配置一個密碼檔案:vim /etc/rsyncd.pas 這個密碼檔案可以随意建立

并且内容隻需要包含密碼即可,不需要使用者名。

執行異步同步操作:

Local:  rsync [OPTION...] SRC... [DEST]

Access via remote shell:  (遠端需要有這個使用者,會上傳到遠端使用者家目錄下)

Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

Access via rsync daemon: (遠端無需有這個使用者,上傳到rsync指定目錄下)

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

上傳:rsync -vzrtopgu --progress  /backup alca@目标伺服器::mode

下載下傳:rsync -vzrtopgu --progress alca@目标伺服器::mode /backup

rsync -vzrtopgu --progress --delete --password-file=/etc/rsyncd.pas   [email protected]::rsync_module_name /backup/mode

這個指令行中-vzrtopg裡的v是verbose,

z是壓縮傳輸,

r是recursive,

topg都是保持檔案原有屬性如屬主、時間的參數。

u是隻同步已經更新的檔案,避免沒有更新的檔案被重複更新一次,不過要注意兩者機器的時鐘的同步。

–progress是指顯示出詳細的進度情況,

–delete是指如果伺服器端删除了這一檔案,那麼用戶端也相應把檔案删除,保持真正的一緻。

後 面的[email protected]::rsync_module_name1中,之後的rsync_module_name1是子產品名, 也就是在/etc/rsyncd.conf中自定義的名稱,rsync_user是指定子產品中指定的可以同步的使用者名。

最後的/backup/mode是備份到本地的目錄名。

參數說明

-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、ssh方式進行資料同步

--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 顯示幫助資訊

本文轉自歲月丶傾城部落格51CTO部落格,原文連結http://blog.51cto.com/alca0126/1402008如需轉載請自行聯系原作者

laihuadongcto