一. 介紹
rsync - remote synchronize是類unix系統下的數據鏡像備份工具,它的特性如下:
-
可以鏡像保存整個目錄樹和文件系統。
-
可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。
-
無須特殊權限即可安裝。
-
快速:第一次同步時rsync會復制全部內容,但在下一次只傳輸修改過的文件。rsync在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。
-
安全:可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。
-
支持匿名rsync 同步文件,是理想的鏡像工具。
二. 安裝
服務端和客戶端安裝rsync
yum -y install rsync
也可以源碼安裝
rsync下載地址:http://rsync.samba.org/
./configure
make && make install
但是需要注意的是必須在服務器A和B上都安裝rsync,其中A服務器上是以服務器模式運行rsync,而B上則以客戶端方式運行rsync。這樣在web服務器A上運行rsync守護進程,在B上定時運行客戶程序來備份web服務器A上需要備份的內容。
三. 服務端配置
cat /etc/rsyncd.conf
#[globale]
strict modes = yes
port = 873
uid = nobody
gid = nobody
user chroot = no
max connections = 5 #同時的最大連接數
timeout = 600
pid file = /var/run/rsyncd.pid #進程的pid存放文件位置
lock file = /var/run/rsyncd.lock #lock文件位置
log file = /var/log/rsyncd.log #日志文件位置
[testdata] #建立一個備份名,客戶端通過該名稱指定具體的備份位置
path=/data/test/img #備份文件存放的目錄位置
ignore errors
read only = no
list = no
hosts allow = 106.xxx.xxx.xxx #允許客戶端B地址
auth users = test #允許那些用戶,這裡的用戶test的信息存放在/etc/rsyncd.password
secrets file = /etc/rsyncd.password #指定允許的用戶和用戶密碼
建立/etc/rsyncd.password文件
cat /etc/rsyncd.password
test:123456
修改防火牆策略,允許873端口(tcp/udp)
iptables -A INPUT -s 106.xxx.xxx.xxx -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
service iptables save
啟動服務器端
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
開機自啟動
echo '/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf' >> /etc/rc.local
四. 客戶端配置
/usr/bin/rsync -avzP --delete --progress --password-file=/etc/rsyncd.password test@服務端ip::test /data/backup/img
rsync參數
-a --archive歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
-r --recursive 對子目錄以遞歸模式處理
-l --links 保留軟鏈
-p --perms 保持文件權限
-t --times 保持文件時間信息
-g --group 保持文件屬組信息
-o --owner 保持文件屬主信息
-D --devices 保持設備文件信息
-z --compress 對備份的文件在傳輸時進行壓縮處理
-P --partial 保留那些因故沒有完全傳輸的文件,以是加快隨後的再次傳輸
-v --verbose 詳細模式輸出
-e --rsh=COMMAND 指定替代rsh的shell程序
-u --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件。(不覆蓋更新的文件)
--progress 顯示備份過程
--delete 是指如果服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致。