一、獲取rsync源碼
http://rsync.samba.org/download.html
二、安裝rsync
> tar -zxf rsync-3.1.2.tar.gz > cd rsync-3.1.2 > ./configure --prefix=/data/rsync > make && make install
三、rsync的配置
rsync主要有三個配置文件:
1、rsyncd.conf(主配置文件) 3、rsyncd.secrets(密碼文件) 3、rsyncd.motd(rysnc服務器信息)
分別創建如下文件
> touch /etc/rsyncd.conf > touch /etc/rsyncd.secrets > chmod 600 /etc/rsyncd.secrets > touch /etc/rsyncd.motd
修改上面創建的文件
> vi /etc/rsyncd.conf
#PID文件路徑 pid file = /data/rsync/rsyncd.pid #鎖文件路徑 lock file = /data/rsync/rsyncd.lock #服務器日志文件路徑 log file = /data/rsync/log/rsyncd.log #端口 port = 873 #IP地址 address = 192.168.1.10 #運行RSYNC守護進程的用戶 uid = root #運行RSYNC守護進程的組 gid = root #使用chroot use chroot = yes #最大連接數為5 max connections = 5 #motd文件路徑 motd file = /etc/rsyncd.motd #傳輸文件的日志 transfer logging = yes #日志文件格式 log format = %t %a %m %f %b #指定rsync發送日志消息給syslog時的消息級別。 syslog facility = local3 timeout = 300 #模塊是定義服務器哪個目錄要被同步 #每個模塊都要以[name]形式定義 [backup] #鏡像目錄,不可缺少 path = /data/backup #允許列文件 list=yes #可以忽略一些無關的IO錯誤 ignore errors #認證的用戶 auth users = test #密碼文件路徑 secrets file = /etc/rsyncd.secrets #注釋 comment = backup data #排除/data/backup下的指定文件 exclude = test1/ test2/ #允許主機 hosts allow = 192.168.1.10 127.0.0.1 #禁止主機 hosts deny = *
(*如果自定義了日志文件路徑,請手動創建log目錄,並給予必要的權限)
> vi /etc/rsyncd.secrets
test:123456
修改服務器歡迎信息
> vi /etc/rsyncd.motd
++++++++++++++++++++++++++++++++++ welcome to use the rsync services! ++++++++++++++++++++++++++++++++++
啟動rsync服務
(1)以--daemon方式啟動服務
> /data/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
查看rsync服務是否啟動
> ps -ef|grep rsync > netstat -anlp|grep 873
(*如果沒有正常啟動,請查看日志文件)
bind() failed: Cannot assign requested address (address-family 2) 2016/04/15 13:37:21 [14946] unable to bind any inbound sockets on port 873 2016/04/15 13:37:21 [14946] rsync error: error in socket IO (code 10) at socket.c(555) [Receiver=3.1.2]
五、客戶端配置與文件同步
客戶端rsync的配置與服務器端基本相同,這里就不過多描述了。
> yum -y install rsync
> /data/rsync/bin/rsync -avzP test@127.0.0.1::backup /data/backup2
-a 參數,相當於-rlptgoD; -r 是遞歸; -l 是鏈接文件,意思是拷貝鏈接文件; -p 表示保持文件原有權限; -t 保持文件原有時間; -g 保持文件原有用戶組; -o 保持文件原有屬主; -D 相當於塊設備文件; -z 傳輸時壓縮; -P 傳輸進度; -v 傳輸時的進度等信息,和-P有點關系; --progress 是指顯示出詳細的進度情況 --delete 是指如果服務器端刪除了這一文件,那么客戶端也相應把文件刪除,保持真正的一致 --password-file=/password/path/file 來指定密碼文件,這樣就可以在腳本中使用而無需交互式地輸入驗證密碼了,這里需要注意的是這份密碼文件權限屬性要設得只有屬主可讀。
> /data/rsync/bin/rsync -avzP --delete test@127.0.0.1::backup /data/backup2 > /data/rsync/bin/rsync -avzP --password-file=/data/rsync.pwd test@127.0.0.1::backup /data/backup2
> echo "123456" > /data/rsync.pwd > chmod 600 /data/rsync.pwd
六、客戶端自動與服務器進行文件同步
通過創建定時任務來完成同步
> crontab -e * * * * * /data/rsync/bin/rsync -avzP --delete --password-file=/data/rsync.pwd test@127.0.0.1::backup /data/backup2
表示每分鍾執行一次命令
> killall crond > /usr/sbin/crond
殺死crond進程,再重新啟動
我們通過在/data/backup下創建新的文件,看看是否會同步到backup2目錄下。
> cd /data/backup/ > echo "test..." > test.txt > cd /data/backup2/ > ls
等待了一分鍾后,文件成功同步了。