目錄:
1.搭建Rsync伺服器
2.用戶端通路
3.同步備份資料腳本
Rsync(remote sync)是Unix及類Unix平台下一款神奇的資料鏡像備份軟體,她不像FTP或其他檔案傳輸服務那樣需要進行全備份,Rsync可以根據資料的變化進行差異備份,進而減少資料流量、提供工作效率。你可以使用她進行本地資料或遠端資料的拷貝,Rsync可以使用SSH安全隧道進行加密資料傳輸。Rsync服務端定義源資料,Rsync用戶端僅在源資料發生改變後才會從伺服器上實際拷貝資料至本地,如果源資料被删除則用戶端資料也會被删除以確定主機之間的資料是同步的。Rsync使用TCP 873端口。
部署Rsync伺服器需要建立一個配置檔案,預設該檔案不存在,然後使用守護程序模式啟動rsync程式即可,下面我們将以圖1-1為原型建立配置檔案将/common釋出給所有的用戶端程式。因為Rsync是Andrew Tridgell (Samba的作者)與Paul Mackerras 合作開發的軟體,是以Rsync配置檔案與Samba比較相似。Rsync分為三個配置檔案分别是:rsyncd.conf(主配置檔案)、rsyncd.secrets(密碼檔案)、rsyncd.motd(伺服器資訊檔案)。
<a target="_blank" href="http://blog.51cto.com/attachment/201304/235506109.png"></a>
圖1-1
[root@centos6 ~]# yum -y install rsync
[root@centos6 ~]# mkdir /common; cp /etc/init.d/* /common/
[root@centos6 ~]# vim /etc/rsync.conf
#/etc/rsyncd.conf
#設定伺服器資訊提示檔案名稱,在該檔案中編寫提示資訊。
motd file = /etc/rsyncd.motd
#開啟Rsync資料傳輸日志功能。
transfer logging = yes
#設定日志檔案名稱,可以通過log format參數設定日志格式。
log file = /var/log/rsyncd.log
#設定Rsync程序号儲存檔案名稱。
pid file = /var/run/rsyncd.pid
#設定鎖檔案名稱。
lock file = /var/run/rsync.lock
#設定伺服器監聽的端口号,預設為873。
port = 873
#設定伺服器所監聽網卡接口的IP位址,這裡伺服器IP位址為192.168.0.254。
address = 192.168.0.254
#設定進行資料傳輸時所使用的賬戶名稱或ID号,預設使用nobody。
uid = nobody
#設定進行資料傳輸時所使用的組名稱或GID号,預設使用nobody。
gid = nobody
#設定user chroot為yes後,rsync會首先進行chroot将根映射到path參數路徑下,對客戶
#端而言系統的根就是path參數所指定的路徑。但這樣做需要root權限,并且在同步符号
#連接配接資料時僅會同步名稱,而内容将不會同步。
use chroot = no
#是否允許用戶端上傳資料,這裡設定為隻讀。
read only = yes
#設定并發連接配接數,0代表無限制。超出并發數後,如果依然有用戶端連接配接請求,則将會收
#到稍後重試的提示消息。
max connections = 10
#子產品,Rsync通過子產品定義同步的目錄,子產品以[name]的形式定義,這個跟Samba定義共
#享目錄是一樣的效果。在Rsync中也可以定義多個子產品。
[common]
#comment定義注釋說明字串。
comment = Web content
#同步目錄的真實路徑通過path指定。
path = /common
#忽略一些IO錯誤
ignore errors
#exclude可以指定例外的目錄,即将common目錄下的某個目錄設定為不同步資料。
#exclude = test/
#設定允許連接配接伺服器的賬戶,賬戶可以是系統中不存在的使用者。
auth users = tom,jerry
#設定密碼驗證檔案名稱,注意該檔案的權限要求為600,僅在設定auth users參數後有效。
secrets file = /etc/rsyncd.secrets
#設定允許哪些主機可以同步資料,可以是單個IP也可以是網段,多個IP與網段之間使用空
#格分割。
hosts allow=192.168.0.0/255.255.255.0
#設定拒絕所有(除hosts allow定義的主機外)。
hosts deny=*
#用戶端請求顯示子產品清單是本子產品名稱是否顯示。
list = false
[root@centos6 ~]# echo "tom:pass" > /etc/rsyncd.secrets
[root@centos6 ~]# echo "jerry:111" >> /etc/rsyncd.secrets
[root@centos6 ~]# chmod 600 /etc/rsyncd.secrets
[root@centos6 ~]# echo “welcome to access” >/etc/rsyncd.motd
[root@centos6 ~]# rsync --daemon
[root@centos6 ~]# echo “rsync --daemon” >> /etc/rc.local
[root@centos6 ~]# iptables -I INPUT -p tcp --dport 873 -j ACCEPT
由于Rsync預設并不是開機啟動項,如果需要設定Rsync為開機啟動服務可以将rsync –daemon指令寫入/etc/rc.local檔案實作開啟啟動。
2.用戶端同步資料
現在讓我們開始同步資料吧,在用戶端主機同樣使用rsync指令就可以進行初始化資料傳輸,使用同樣的程式但不需要--daemon選項。
[root@centos6 ~]# rsync -vzrtopg --progress [email protected]::common /test
rsync指令
描述:一個快速、多功能的遠端(或本地)資料拷貝工具
用法:下表較全面地介紹了rsync的文法格式,SRC表示源路徑,DEST表示目标路徑
本地拷貝
rsync [選項] SRC… [DEST]
通過遠端shell拷貝
下載下傳資料
rsync [選項] [USER@]HOST:SRC... [DEST]
上傳資料
rsync [選項] SRC… [USER@]HOST:DEST
通過rsync程序拷貝
rsync [選項] [USER@]HOST::SRC... [DEST]
rsync [選項] SRC… [USER@]HOST::DEST
選項: -v,--verbose 顯示詳細資訊
-q,--quiet 靜默模式,無錯誤資訊
-a,--archive 歸檔模式,主要保留檔案屬性,等同于-rlptgoD
-r,--recursive 遞歸
-b,--backup 如果目标路徑已經存在同名檔案時,将老的檔案重命名為
~filename,可以使用--suffix指定不同的備份字首
--back-dir 将備份檔案儲存至指定目錄
--suffix 指定備份檔案字首
-u,--update 如果目标位址中的檔案比将要下載下傳的檔案更新則不執行同
步,也就是說不會用舊的檔案覆寫新的檔案
-l,--links 保留符号連接配接
-p,--perms 保留檔案權限屬性
-H,--hard-links 保留硬連接配接
-p,--perms 保留權限
-A,--acls 保留ACL權限
-X,--xattrs 保留檔案附件屬性
-o,--owner 保留檔案所有者屬性
-g,--group 保留檔案所屬組屬性
--devices 保留裝置檔案
--specials 保留特殊檔案
-D 等同于--devices --specials
-t 保留修改時間屬性
-W,--whole-file 不做增量檢查,直接拷貝全部檔案
-e,--rsh=COMMAND 指定遠端shell
--existing 僅同步目标路徑中已經有的檔案,不下載下傳源路徑下新的檔案
--delete 删除那些僅在目标路徑中存在的檔案(源路徑中不存在)
-z,--compress 傳輸過程中對資料進行壓縮
--include=PATTERN 比對不排除的檔案
--exclude=PATTERN 比對需要排除的檔案
--progress 顯示資料傳輸的進度資訊
--partial 保留因故障沒有傳輸完成的檔案
-P 等同于--progress --partial
--password-file=FILE 指定密碼檔案,将密碼寫入檔案,實作非互動式資料同步
--list-only 僅列出伺服器子產品清單,需要rsync伺服器設定list = true
執行個體:
[root@centos6 ~]# rsync -t *.c foo:src/
将本機目前目錄下的.c結尾的檔案拷貝至foo主機的src目錄下。
[root@centos6 ~]# rsync -avz foo:src/bar /data/tmp
從foo主機上以遞歸方式将src/bar目錄拷貝至本機/data/tmp目錄。
[root@centos6 ~]# rsync -avz foo:src/bar/ /data/tmp
從foo主機上以遞歸方式将src/bar目錄下的所有内容拷貝至本機/data/tmp目錄,但在/data/tmp目錄下不會建立bar目錄。
[root@centos6 ~]# rsync -avz /src/foo /dest
将本機/src/foo目錄拷貝至/dest目錄。
[root@centos6 ~]# rsync -avz [email protected]::common /test3
使用tom賬戶連接配接遠端192.168.0.254主機的rsync程序,将common子產品定義的path路徑下載下傳至本地test3目錄。
[root@centos6 ~]# rsync -avz 192.168.0.254::common /dest
匿名下載下傳192.168.0.254伺服器的common子產品至本地/dest目錄。
[root@centos6 ~]# rsync --list-only [email protected]::
顯示192.168.0.254伺服器所有的子產品名稱,需要服務端配置list = true才會顯示。
[root@centos6 ~]# echo “pass” > rsync.pass
[root@centos6 ~]# rsync -avz --delete --password-file=rsync.pass 192.168.0.254::common /dest
建立密碼檔案,使用密碼檔案進行非互動式資料同步。
如果用戶端需要定期對Rsync伺服器的資料進行備份,可以編寫Shell腳本,通過計劃任務實作資料的定期備份工作。下面的腳本為精簡版資料備份腳本範例:
[root@centos6 ~]# cat rsync_bak.sh
#!/bin/bash
#This script does backup through rsync.
#Date:2012-10-1
#Version:1.0 beta
#
export PATH=/bin:/usr/bin:/usr/local/bin
SRC=common
DEST=/data
Server=192.168.0.254
User=tom
#password file must not be other-accessible.
Passfile=/root/rsync.pass
#If the DEST directory not found, then create one.
[ ! -d $DEST ] && mkdir $DEST
[ ! -e $Passfile ] && exit 2
rsync -az --delete --password-file=$Passfile ${User}@${Server}::$SRC $DEST/$(date +%Y%m%d)
http://manual.blog.51cto.com/3300438/1172372 丁丁曆險部落格
本文轉自丁丁曆險51CTO部落格,原文連結:http://blog.51cto.com/manual/1172372 ,如需轉載請自行聯系原作者