linux 下的 rsync 文件同步


rsync是linux下的一款快速增量備份工具Remote Sync,是一款實現遠程同步功能的軟件,它在同步文件的同時,可以保持原來文件的權限、時間、軟硬鏈接等附加信息。rsync是用 “rsync 算法”提供了客戶機和遠程文件服務器的文件同步的快速方法,而且可以通過ssh方式來傳輸文件,這樣其保密性也非常好。
 
一、獲取rsync源碼
http://rsync.samba.org/download.html
如:rsync-3.1.2.tar.gz
 
二、安裝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
(*出於安全考慮,我們把rsyncd.secrets權限設為600,注意這里的用戶名和密碼並不一定是系統的用戶和密碼,為了安全可以自已設置)
 
修改服務器歡迎信息
> vi /etc/rsyncd.motd
++++++++++++++++++++++++++++++++++
welcome to use the rsync services!
++++++++++++++++++++++++++++++++++
四、rsync基本操作
啟動rsync服務
(1)以--daemon方式啟動服務
> /data/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
(2)通過xinetd的方式
查看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]
如果出現如上信息,則需要把rsyncd.conf中的address改為127.0.0.1。
 
五、客戶端配置與文件同步
客戶端rsync的配置與服務器端基本相同,這里就不過多描述了。
> yum -y install rsync
我這里就只在本機演示了
> /data/rsync/bin/rsync -avzP test@127.0.0.1::backup /data/backup2
上述命令的意思是用test用戶登陸到127.0.0.1的rsync服務器上,把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
/data/rsync.pwd用來存儲客戶端用test用戶登陸服務器時需要的密碼
> 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
等待了一分鍾后,文件成功同步了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM