Rsync 實現文件定時同步

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詳細提示
  a以archive模式操做,複製目錄、符號鏈接
  z壓縮
  u只進行更新,防止本地新文件被重寫,注意二者機器的時鐘的同時

--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

相關文章
相關標籤/搜索