安裝:
Ubuntu
sudo apt-get install rsync
Cent os
yum install rsync
配置:(建立三個文件,這裏我放在/etc/rsyncy/,分別是rsyncd.conf,rsyncd.secrets,rsyncd.motd)
#chmod 600 /etc/rsyncd/rsyncd.secrets //首先將rsyncd.secrets權限設置爲root,否則會報錯。
#vim /etc/rsyncd/rsyncd.conf //編輯rsyncd.conf文件
uid = root/nobody
gid = root/nobody
use chroot = no
timeout = 300
port = 873
max connections = 30
pid file = /var/log/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
[backup] //模塊名
path = 要同步的目錄
comment =test
read only = no
write only = no
list = no
ignore errors
hosts allow = 192.168.1.0/24
hosts deny = *
auth users = root
secrets file=/etc/rsyncd/rsyncd.secrets
PS:這裏需要說明一下,配置這些東西,主要是在服務器端,客戶端不用這樣弄的,下面會說到客戶端的配置方式。
配置rsyncd.secrets
#vim /etc/rsyncd/rsyncd.secrets //編輯rsyncd.secrets文件
root:密碼 //這裏的root,要和前面配置rsyncd.conf裏的auth users一樣,後面是密碼
#chmod 777 要同步的目錄 //修改要同步的目錄的權限,否則會報錯
啓動
#/usr/bin/rsync –daemon –config=/etc/rsyncd.conf
關閉
#lsof –i :873 //這裏可以得到PID號
#kill -9 pid
我給的網址裏面有更加詳細和好的關閉方法,可以去看看
客戶端配置:
先安裝好rsync
啓動
#touch /etc/rsyncd.conf //這裏必須建立這個文件,不然無法啓動rsync
#/usr/bin/rsync –daemon
#touch /etc/rsyncd/rsyncd.secrets
#vim /etc/rsyncd/rsyncd.secrets
密碼 //這裏的密碼和服務器端的密碼一樣
注意事項:
這裏必須保證服務器端和客戶端能互相通信
我們將兩臺電腦的873端口要打開,不然會報錯
#vim /etc/sysconfig/iptables
加入
-A INPUT –m –state NEW –m tcp –p tcp –dport873 –j ACCEPT
注意這裏兩臺電腦都要加入,不然會報錯。
同步:
rsync –vzrtopg –delete 客戶端要同步到服務器的目錄 配置文件中的auth users@ip地址::模塊名--password-flie=/etc/rsyncd.secrets
這裏是將客戶端的同步到服務器上,--delete表示差異同步,沒有的會被刪除掉,服務器端和客戶端保持一致,如果不需要這樣就將—delete刪除
rsync –avzP –delete 配置文件中的authusers @ip地址::模塊名–password-file=/etc/rsyncd.secrets
這裏是將服務器的同步到客戶端上,和上面的同理
下面是通過ssh將遠程服務器同步到本地
下面是通過ssh將本地同步到遠程服務器
下面是一些rsync一些參數的用法,在百度知道中有更加詳細的參數用法
ps:2018年7月2日
沒想到會再次用到這個博客。再次遇到了很多坑,這裏記錄一下,rsync的conf有一定的順序問題,順序恰當可以免密碼直接開始同步。
這樣子配置就不會輸入密碼,不用帶--password-file這個參數,也不用在客戶端裏創建secrets文件。
上面這個圖中如果auth user在上面這個位置就不用輸入密碼,如果在我下面的註釋的這個位置就需要輸入密碼
rsync中的參數
-r 是遞歸
-l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當於塊設備文件;
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息,和-P有點關係,自己試試。可以看文檔;
-e ssh的參數建立起加密的連接。
-u只進行更新,防止本地新文件被重寫,注意兩者機器的時鐘的同時
--progress是指顯示出詳細的進度情況
--delete是指如果服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致
--password-file=/password/path/file來指定密碼文件,這樣就可以在腳本中使用而無需交互式地輸入驗證密碼了,這裏需要注意的是這份密碼文件權限屬性要設得只有屬主可讀。
可能中間可能會出現一些錯誤,可以參看錯誤處理。下面是網址和我參看的一些資料
詳情可參考:http://www.linuxidc.com/Linux/2012-12/75995.htm#實現同步
http://www.poluoluo.com/server/201309/241711.html#錯誤處理
http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html#較全的命令使用方法