用RSYNC實現資料的備份和同步

來源:互聯網
上載者:User
用RSYNC實現資料的備份和同步

  作者:cqj1314 提交日期:2006-3-28 17:18:00
用RSYNC實現資料的備份和同步

RSYNC的特性:

1、可以鏡像儲存整個分類樹和檔案系統。
2、可以很容易做到保持原來檔案的許可權、時間、軟永久連結等等。
3、無須特殊許可權即可安裝。
4、最佳化的流程,檔案傳輸效率高。
5、可以使用rcp、ssh等方式來傳輸檔案,當然也可以通過直接的socket串連。

RSYNC的安裝:
./configure && make && make install

RSYNC伺服器端配置:(IP:192.168.100.33)

1、 建立備份的目錄。
2、 建立設定檔/etc/rsyncd.conf,配置如下:

[BBS_ZT_241] #指定認證的備份模組名
path = /usr/local/apache2/ #本地存放備份的目錄
auth users = apache #認證的使用者名稱,需在兩端的/etc/rsyncd.secrets檔案中添加
uid = apache #備份以apache使用者和組進行
gid = apache
hosts allow = 192.168.100.90 #哪些電腦可以訪問rsync服務
hosts deny = 192.168.100.0/24 #哪些電腦不可以訪問rsync服務
use chroot = no #不使用chroot
secrets file = /etc/rsyncd.secrets #認證檔案路徑
ignore errors # 可以忽略一些無關的IO錯誤
read only = no
list = no #不允許列檔案

如果同時還需要備份其它目錄的話,可以直接在設定檔的後面繼續增加配置內容,這樣就可以同時備份多個目錄了。
同時存放備份的目錄必須從屬密碼檔案的使用者組chown apache:apache /usr/local/apache2
3、 建立認證檔案

Vi /etc/rsyncd.secrets 然後在裡面添加使用者和密碼apache:apache,同時要將rsyncd.secrets檔案的屬性設為ROOT擁有,許可權設為600(否則無法備份成功)
chown root.root /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
伺服器端設定完畢,啟動:service xinetd restart
4、 開機自動啟動

加入inetd.conf,編輯vi /etc/services,加入
rsync 873/tcp # rsync
rsync 873/udp #rsync
修改了services檔案的好處就在於系統知道873連接埠對應的服務名為rsync

建立一個vi /etc/xinetd.d/rsync檔案,輸入以下內容:
service rsync
  {
    disable = yes
    socket_type  = stream
    wait      = no
    user      = root
    server     = /usr/local/rsync/bin/rsync
    server_args  = --daemon
    log_on_failure += USERID
  }儲存。
/* 編加vi /etc/inetd.conf,加入rsync stream tcp nowait root /usr/bin/rsync rsync –daemon */

上面的方法由於存在安全性漏洞,所以推薦使用下面的方法:

編輯vi /etc/rc.d/rc.local,在最後添加:/usr/local/bin/rsync --daemon

RSYNC用戶端配置:

1、 建立認證檔案/etc/rsyncd.secrets添加在伺服器端相同的使用者和密碼apache:apache,同時將檔案屬性設為ROOT所有,許可權設為600
2、 測試能否工作:/usr/bin/rsync -rlHpoDtS --progress --password-file=/etc/rsyncd.secrets /usr/local/apache2/htdocs/ apache@192.168.100.33::BBS_ZT_241 >>/opt/rsync.log

放入自動定時執行:

每隔1小時備份一次
crontab -u root –e
0 */1 * * * /usr/bin/rsync -rlHpoDtS --progress --password-file=/etc/rsyncd.secrets /usr/local/apache2/htdocs/ apache@192.168.100.33::BBS_ZT_241 >>/opt/rsync.log

在伺服器端的iptables中對rsync控制:
Vi /etc/rc.d/forward
iptables -A INPUT -p tcp -s ! 11.22.33.44 --dport 873 -j DROP,如此,只有11.22.33.44這個client ip能連入rsync。
當程式在你所指定的時間執行後,系統會寄一封信給你,顯示該程式執行的內容,若是你不希望收到這樣的信,請在每一行空一格之後加上 > /dev/null 2>&1 即可

附:
rsync命令的用法

rsync的命令格式可以為:

1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
2. rsync [OPTION]... [USER@]HOST:SRC DEST
3. rsync [OPTION]... SRC [SRC]... DEST
4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync有六種不同的工作模式:

1. 拷貝本地檔案;當SRC和DES路徑資訊都不包含有單個冒號":"分隔字元時就啟動這種工作模式。
2. 使用一個遠程shell程式(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔字元時啟動該模式。
3. 使用一個遠程shell程式(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔字元時啟動該模式。
4. 從遠程rsync伺服器中拷貝檔案到本地機。當SRC路徑資訊包含"::"分隔字元時啟動該模式。
5. 從本地機器拷貝檔案到遠程rsync伺服器中。當DST路徑資訊包含"::"分隔字元時啟動該模式。
6. 列遠程機的檔案清單。這類似於rsync傳輸,不過只要在命令中省略掉本地機資訊即可。

執行個體說明:
# rsync -vazu -progress terry@192.168.100.21:/terry/ /home

v詳細提示
a以archive模式操作,複製目錄、符號串連,相當於-rlptgod參數
z壓縮
u只進行更新,防止本地新檔案被重寫,注意兩者機器的時鐘的同時
-progress指顯示
以上命令是保持客戶機192.168.100.90上的/home/terry目錄和rsync伺服器上的terry目錄同步。該命令執行同步之前會要求你輸入terry帳號的密碼,這個帳號是我們前面在rsyncd.secrets檔案中定義的。如果想將這條命令寫到一個指令碼中,然後定時執行它的話,可以使用--password-file選項,具體命令如下:
# rsync -vazu -progress --password-file=/etc/rsync.secret
  terry@192.168.100.21:/terry/ /home
要使用--password-file選項,就得先建立一個存放密碼的檔案,這裡指定為/etc/rsync.secret。其內容很簡單,如下:
terry:12345
同樣要修改檔案屬性如下:
# chmod 600 /etc/rsyncd.secrets

PS:

伺服器RSYNC端配置案例:(4.244)
Vi /etc/rsyncd.conf
[204_files]
path = /usr/local/apache2/htdocs/files
auth users = apache
uid = apache
gid = apache
use chroot = no
secrets file = /etc/rsyncd.secrets
read only = no
list = no

[204_images]
path = /usr/local/apache2/htdocs/images
auth users = apache
uid = apache
gid = apache
use chroot = no
secrets file = /etc/rsyncd.secrets
read only = no
list = no

[204_htdocs]
path = /usr/local/apache2/htdocs
auth users = apache
uid = apache
gid = apache
use chroot = no
secrets file = /etc/rsyncd.secrets
read only = no
list = no

Vi /etc/rsyncd.secrets #建立使用者和密碼檔案
apache:71GW3GuEBaoJ

Vi /etc/xinetd.d/rsync #自動啟動
service rsync
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

用戶端設定:(4.243)
Vi /etc/rsyncd.secrets #添加認證密碼
71GW3GuEBaoJ

Vi /etc/xinetd.d/rsync #開機自動運行
service rsync
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}



建立用戶端運行指令碼:
Vi /opt/shell_order/rsync.sh
#/bin/sh

log_path=/opt/shell_order/
time=`date +%Y%m%d`
logname_file=file_sync.log
logname_img=img_sync.log
log_file=$log_path$logname_file$time
log_img=$log_path$logname_img$time
filepath=/usr/local/apache2/htdocs/files/
imgpath=/usr/local/apache2/htdocs/images/
pwfile=/etc/rsyncd.secrets
ip=192.168.100.
refile=_files
reimg=_images
user=apache


fun

 

轉自:

http://www.tianyablog.com/blogger/post_show.asp?idWriter=0&Key=0&BlogID=368688&PostID=4607119

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.