rsync的規劃:html
Rsync配置前首先規劃好,同步的方向性。方向性分爲推和拉的方式,規劃推、拉是爲了能夠在防火牆設置端口是誰主動鏈接。例如:通常爲從APP服務器生成的靜態頁面使用推的方式將文件推送到Apache服務器上。下面就是使用推的方式進行配置。web
rsync 同步的大體思路:shell
服務器A和B上都安裝rsync,其中B服務器上是以服務器模式運行rsync,而A上則以客戶端方式運行rsync。這樣在web服務器B上運行rsync守護進程,在A上定時運行客戶程序來同步web服務器B上須要同步的內容。apache
rsync 同步有下面幾個優勢:vim
能夠鏡像 保存整個目錄樹和文件系統。安全
能夠很容易作到保持原來文件的權限、時間、軟硬連接等等。bash
無須特殊權限便可安裝。服務器
快速:第一次同步時 rsync 會複製所有內容,但在下一次只傳輸修改過的文件。rsync 在傳輸數據的過程當中能夠實行壓縮及解壓縮 操做,所以可使用更少的帶寬。ssh
安全:可使用scp、ssh等方式來傳輸文件,固然也能夠經過直接的socket鏈接。socket
支持匿名傳輸,以方便進行網站鏡象。
1. rsync的安裝(客戶端和服務端都須要安裝):
#下載 http://www.samba.org/rsync/ shell> tar zxvf rsync-x.x.x.tar.gz shell> cd rsync-x.x.x shell> ./configure && make && make install #或者 sudo apt-get install rsync yum install rsync
2. rsync的配置
rsync的主要有如下三個配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密碼文件)、rsyncd.motd(rysnc服務器信息)
rsync服務端配置:
2.1 rsyncd.conf
uid =backup #/etc/rsyncd.conf 所屬用戶ID,通常爲root gid =backup #/etc/rsyncd.conf 所屬權限組 use chroot = no #在傳輸文件的以前,是否轉到用戶根目錄。 max connections = 4 #最大鏈接數 pid file = /var/run/rsyncd.pid #服務進程pid保存文件 lock file = /var/run/rsyncd.lock #鎖文件路徑 log file = /var/log/rsyncd.log #日至文件路徑 log format = %t %a %m %f %b #模塊兒裏的公共屬性也能夠在全局定義,譬如: hosts allow = 10.29.204.107 #容許訪問的ip地址,若是有多個ip,請用空格分割。 [web] #要備份的模塊名,該名稱客戶端進行同步時須要調用 path = /disk1/www/imageserver/Public_admin #要備份的目錄 ignore errors #能夠忽略一些無關的IO錯誤 read only = true # // 只讀 list = false #//不容許列文件 hosts allow = 10.29.204.107 hosts deny = 0.0.0.0/32 auth users = zhangsan #//認證的用戶名,若是沒有這行則代表是匿名,此用戶與系統無關 secrets file = /etc/rsyncd/backup.secrets #//密碼和用戶名對比表,密碼文件本身生成 exclude = important/ #指定不須要同步的目錄名,注意,該目錄的路徑是相對path的。不須要些絕對路徑,若是有多個目錄不須要同步,請用空格分割開. comment = This is a test #這個模塊的註釋信息
注意:auth users = zhangsan,這個和系統用戶名沒有關係,只是rsync本身的用戶管理。
須要將rsyncd.conf更改權限。將rsyncd.conf這個密碼文件的文件屬性設爲root擁有, 且權限要設爲600, 不然沒法備份成功!
2.2 rsyncd.secrets
配置rsync密碼(在上邊的配置文件中已經寫好路徑) rsync.pas(名字隨便寫,只要和上邊配置文件裏的一致便可),格式(一行一個用戶)
zhangsan:passwd
須要將rsyncd.secrets更改權限。將rsyncd.secrets這個密碼文件的文件屬性設爲root擁有, 且權限要設爲600, 不然沒法備份成功!
chmod 600 /etc/rsyncd/server/rsyncd.secrets
rsync客戶端配置:
配置密碼文件,這個密碼是rsync請求服務端須要的認證密(/etc/rsyncd/server/rsyncd.secrets裏的密碼)
]# vim /etc/rsyncd/client.pass passwd
3. 服務端配置 rsync 服務
3.1. 配置 rsync 服務器的步驟
首先要選擇服務器啓動方式
對於負荷較重的 rsync 服務器應該使用獨立運行方式
對於負荷較輕的 rsync 服務器可使用 xinetd 運行方式
建立配置文件 rsyncd.conf
對於非匿名訪問的 rsync 服務器還要建立認證口令文件
3.2. 以 xinetd 運行 rsync 服務
CentOS 默認以 xinetd 方式運行 rsync 服務。rsync 的 xinetd 配置文件
在 /etc/xinetd.d/rsync。要配置以 xinetd 運行的 rsync 服務須要執行以下的命令:
# chkconfig rsync on # service xinetd restart
管理員能夠修改 /etc/xinetd.d/rsync 配置文件以適合您的須要。例如,您能夠修改配置行
server_args = --daemon
在後面添加 rsync 的服務選項。
3.3. 獨立運行 rsync 服務
最簡單的獨立運行 rsync 服務的方法是執行以下的命令:
# rsync --daemon --config=/etc/rsyncd/rsyncd.conf
您能夠將上面的命令寫入 /etc/rc.local 文件以便在每次啓動服務器時運行 rsync 服務。固然,您也能夠寫一個腳本在開機時自動啓動 rysnc 服務。
4. 客戶端使用rsync服務。
從server端拉取文件:
rsync -vzrtopg --progress --delete zhangsan@192.168.0.217::web /home/backup --password-file=/etc/rsyncd/client.pass
往server端推送文件:
rsync -vzrtopg --progress --password-file=/etc/rsyncd/client.pas /home/backup zhangsan@192.168.0.217::web
鏡像本地目錄:
rsync -av --exclude="front/front_Runtime" --exclude="front/Html" /disk1/www/frontweb/* /disk1/www/frontweb_news
參數說明
參數名 |
說明 |
Rsync |
同步服務 |
-vzrtopg |
v詳細提示 |
--progress |
顯示進程 |
--delete |
刪除文件保持同步 |
zhangsan |
服務器容許訪問的用戶名 |
192.168.0.217 |
服務器IP |
::web |
服務器中定義的備份模塊名(注意:在模塊名前面有兩個冒號「::」 表示遠程文件同步,只有一個冒號,表示本地文件同步) |
/home/backup/ |
本地備份文件目錄 |
寫成定時任務:
]# vim /root/crontab/tongbu.sh #!/bin/bash /usr/bin/rsync -vzrtopg --progress --delete zhangsan@192.168.0.217::web /home/backup --password-file=/etc/client.pass ]# crontab -e /5 * * * * /root/crontab/tongbu.sh #五分鐘運行一次
其餘:
]# rsync --daemon #默認用/etc/rsyncd.conf配置文件啓動 ]# rsync --daemon --config=/etc/rsyncd/rsyncd.conf //指定配置文件啓動 ]# killall -9 rsync #結束 ]# ps -ef | grep rsync #查看 ]# netstat -a | grep rsync #檢查端口 ]# telnet 192.168.1.190 873 #測試端口
rsync中出現的幾種錯誤:
同步命令:
rsync -vzrtopg --progress --delete --exclude=".svn" --password-file=/etc/rsyncd/apache.pass /var/data/codes/ backup@172.28.6.69::tbfrom79
[tbfrom79] path = /var/www/html/online ignore errors read only = no list = false hosts allow = 172.28.6.79 hosts deny = 0.0.0.0/32 auth users =backup uid=apache gid=apache secrets file = /etc/rsyncd/backup.pass
修改 /var/www/html/online所屬用戶和用戶組爲apache