Rsync 設定教學

由 Derek 發表於 十月 4, 2011 / 尚無評論

 

一、 Rsync介紹

rsyncUnix下的一款應用軟體,它能同步更新兩處電腦的檔案與目錄,並適當利用差分編碼以減少資料傳輸。rsync中一項與其他大部份類似程式或協定中所未見的重要特性是映像對每個目標只需要一次傳送。rsync可複製/顯示目錄內容,以及複製檔案,並可選擇性的壓縮以及遞歸複製。在常駐模式(daemon mode)下,rsync預設監聽TCP873,以原生rsync傳輸協定或者透過遠端shellRSH或者SSH伺服檔案。SSH情況下,rsync用戶端執行程式必須同時在本機和遠端機器上安裝。rsync是自由軟體,以GNU通用公共許可證發行。

 

Rsync在備份的部份

主要是傳送資料差異的部份,因此大多都被使用在差異備份上。除了資料第一次傳輸是整份檔案外,之後都只會傳送資料間異動的部份。

備份相關名詞 :

鏡像備份(mirror backup) : 如同鏡子一般,把資料完整的做一份備份。

增量備份(incremental backup) : 只備份從上次備份後,資料有異動的部份。

 

二、 Rsync設定

這次在rsync設定部份,直接使用範例的方式會比較快了解。

 

範例 :

A主機的網頁資料( /var/www/html ),定期備份到B主機的( /home/backup/)

A主機( Server ) IP :192.168.1.222

B主機( Clinet ) IP :192.168.1.122

 

在開始設定之前,有兩個檔案要說明一下:

/etc/rsyncd.conf    rsync設定檔

/etc/rsyncd.secrets  rsync 密碼檔

 

1. 先設定B主機

1.1 B主機上查詢是否有安裝rsync


[root@localhost ~]# rpm -qa | grep 'rsync'

rsync-2.6.8-3.1

 

如果沒有安裝的話 請自行補上


[root@localhost ~]# yum -y install rsync

 

1.2 修改 /etc/xinetd.d/rsync 設定

在這邊所設定的rsync是用xinetd來做啟動的。所以如果在rsync並無特別設定的話,則會依照xinetd.conf所設定的執行。


[root@localhost ~]# vim /etc/xinetd.d/rsync

service rsync

{

        disable = yes  改為 no

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/bin/rsync

        server_args     = --daemon

        log_on_failure  += USERID

有關xinetd和rsync 的設定可以參考「xinetd.conf和rsync相關設定說明

 

1.3修改rsync.conf 設定檔 (如果沒有此檔的話請自行建立)

   以下所使用到的設定參數請依照需求選取設定。


[root@localhost ~]# vim /etc/rsyncd.conf

###backup config###                      //註解

 [web]                                   //module name(rsync會依此名稱抓取設定)

           comment = backup dmz web      //說明

           hosts allow = 192.168.1.222   //允許使用rsync連入的ip

           hosts deny = *                //不允許連入的ip*表示全檔

           path = /home/backup/          //存放備份資料的目錄

           auth users = root        //認證帳號 (要設定於 rsyncd.secrets 內的帳號)

           uid = root                    //用來啟動rsync server uid

           gid = root                    //用來啟動rsync server gid

           secrets file = /etc/rsyncd.secrets      //密碼檔存放路徑

           read only = no                          //是否設定為唯讀

           dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

                                          //不要對這些附檔名的檔案做壓縮

 

1.4設定連線的帳號密碼 (如果沒有此檔的話請自行建立)


[root@localhost ~]# vim /etc/rsyncd.secrets

root:12345  #(設定格式帳號:密碼)

 

1.5 修改rsyncd.secrets使用權限 (很重要)


[root@localhost ~]# chmod 600 /etc/rsyncd.secrets

[root@localhost ~]# chown root.root  /etc/rsyncd.secrets

 

1.6重新啟動 xinetd,不是啟動 rsync

這邊應該會有人有所疑問,為什麼是重啟xinetd而不是rsync

2.1步驟時,是使用xinetd來啟動rsync。因此在這邊是重啟xinetd而不是rsync


[root@localhost ~]# /etc/init.d/xinetd restart

 

1.7 設定開機自動啟動xinetd

基本上xinetd,已經有預設開機會啟動,如果沒有話請自行手動設定


[root@localhost ~]# chkconfig xinetd on              #開機自動啟動

[root@localhost ~]# /etc/init.d/xinetd  restart      #手動啟動

 

 1.8 測試看看是否都正常啟用 (rsyncport873)


[root@localhost ~]#  netstat -tnlp | grep 873

tcp    0    0 0.0.0.0:873        0.0.0.0:*         LISTEN      4235/xinetd

 

[root@localhost ~]# telnet localhost 873 

#若出現下列訊息表示正常

Trying 127.0.0.1…

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

@RSYNCD: 29

 

2. 設定A主機

2.1 A主機上查詢是否有安裝rsync


[root@localhost ~]# rpm -qa | grep 'rsync'

rsync-2.6.8-3.1

 

如果沒有安裝的話 請自行補上


[root@localhost ~]# yum -y install rsync

 

2.2 設定登入B主機的密碼

A主機上只需要設定密碼就可以。 (如果沒有此檔的話請自行建立)


[root@localhost ~]# vim /etc/rsyncd.secrets

12345  #(設定格式密碼)

 

2.3修改rsyncd.secrets使用權限 (很重要)


[root@localhost ~]# chmod 600 /etc/rsyncd.secrets

[root@localhost ~]# chown root.root  /etc/rsyncd.secrets

 

2.4 測試rsync是否可傳輸資料


[root@localhost ~]# /usr/bin/rsync -avrHS --delete --password-file=/etc/rsyncd.secrets  /opt root@192.168.1.122::web

#或是

[root@localhost ~]# /usr/bin/rsync -rvlHpogDtS --delete --password-file=/etc/rsyncd.secrets  /opt/ root@192.168.1.122::web

 

#rsync結束後會看到下列訊息

sent 19380160 bytes  received 1062 bytes  1685323.65 bytes/sec

total size is 19374133  speedup is 1.00

有關rsync 執行語法 可參考「Rsync 執行參數說明

 

3設定排程

如果剛才的同步指令沒有問題的話。就可以開始設定排程了

3.1先自行寫一個rsync script 用來設定排程


[root@localhost ~]# vim /root/bin/rsync.sh   #存放在/root/bin/(存放位置可自訂)

#!/bin/sh

/usr/bin/rsync -avrHS --delete --password-file=/etc/rsyncd.secrets  /opt root@192.168.1.122::web

 

3.2設定排程


[root@localhost ~]# crontab -e

0 0 * * * /root/bin/rsync.sh

 

 

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*