首先是服務端的配置:
安裝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