centos 實作 rsync
、 Rsync設定
這次在rsync設定部份,直接使用範例的方式會比較快了解。
範例 :
把A主機的網頁資料( /home/backup/ ),定期備份到B主機的( /home/backup/)
A主機( Server端 ) IP :192.168.0.112
B主機( Clinet端 ) IP :192.168.0.111
在開始設定之前,有兩個檔案要說明一下:
/etc/rsyncd.conf 為rsync設定檔
/etc/rsyncd.secrets 為rsync 密碼檔
1. 先設定B主機
1.1 在B主機上查詢是否有安裝rsync
[root@localhost ~]# rpm -qa | grep 'rsync'
rsync-3.0.6-12.el6.x86_64
如果沒有安裝的話 請自行補上
[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 ~]# vi /etc/rsyncd.conf
###backup config### //註解
[web] //module name(rsync會依此名稱抓取設定)
comment = backup dmz web //說明
hosts allow = 192.168.0.112 //允許使用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 ~]# vi /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 測試看看是否都正常啟用 (rsync的port為873)
[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 ::1...
Connected to localhost.
Escape character is '^]'.
@RSYNCD: 30.0
2. 設定A主機
2.1 在A主機上查詢是否有安裝rsync
[root@localhost ~]# rpm -qa | grep 'rsync'
rsync-3.0.6-12.el6.x86_64
如果沒有安裝的話 請自行補上
[root@localhost ~]# yum -y install rsync
2.2 設定登入A主機的密碼
在A主機上只需要設定密碼就可以。 (如果沒有此檔的話請自行建立)
[root@localhost ~]# vi /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是否可傳輸資料
在A主機上建立要備份的目錄及資料/home/backup/anthony
在B主機上建立要備份的目錄/home/backup/
[root@localhost ~]# rsync -rvlHpogDtS --password-file=/etc/rsyncd.secrets /home/backup/* root@192.168.0.111::web
#rsync結束後會看到下列訊息
sending incremental file list
anthony
sent 76 bytes received 27 bytes 206.00 bytes/sec
total size is 5 speedup is 0.05
3設定排程
如果剛才的同步指令沒有問題的話。就可以開始設定排程了
3.1先自行寫一個rsync 的script 用來設定排程
[root@localhost ~]# vi /root/bin/rsync.sh #存放在/root/bin/(存放位置可自訂)
#!/bin/sh
/usr/bin/rsync -rvlHpogDtS --password-file=/etc/rsyncd.secrets /home/backup/* root@192.168.0.111::web
3.2設定排程
[root@localhost ~]# crontab -e
0 0 * * * /root/bin/rsync.sh
錯誤訊息
1.@ERROR: auth failed on module diamond
請將密碼檔修改為 600 即可解決
2.rsync: mkstemp "/.anthony.v6xvr6" (in web) failed: Permission denied (13)
修改 SeLinux 權限
讓無權限的使用者可以寫入
# setsebool -P allow_rsync_anon_write=1
設定目錄寫入權限
# chcon -t public_content_rw_t /home/backup
應該是在B主機上進行設定,但我是連A主機都設定以免出錯
這次在rsync設定部份,直接使用範例的方式會比較快了解。
範例 :
把A主機的網頁資料( /home/backup/ ),定期備份到B主機的( /home/backup/)
A主機( Server端 ) IP :192.168.0.112
B主機( Clinet端 ) IP :192.168.0.111
在開始設定之前,有兩個檔案要說明一下:
/etc/rsyncd.conf 為rsync設定檔
/etc/rsyncd.secrets 為rsync 密碼檔
1. 先設定B主機
1.1 在B主機上查詢是否有安裝rsync
[root@localhost ~]# rpm -qa | grep 'rsync'
rsync-3.0.6-12.el6.x86_64
如果沒有安裝的話 請自行補上
[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 ~]# vi /etc/rsyncd.conf
###backup config### //註解
[web] //module name(rsync會依此名稱抓取設定)
comment = backup dmz web //說明
hosts allow = 192.168.0.112 //允許使用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 ~]# vi /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 測試看看是否都正常啟用 (rsync的port為873)
[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 ::1...
Connected to localhost.
Escape character is '^]'.
@RSYNCD: 30.0
2. 設定A主機
2.1 在A主機上查詢是否有安裝rsync
[root@localhost ~]# rpm -qa | grep 'rsync'
rsync-3.0.6-12.el6.x86_64
如果沒有安裝的話 請自行補上
[root@localhost ~]# yum -y install rsync
2.2 設定登入A主機的密碼
在A主機上只需要設定密碼就可以。 (如果沒有此檔的話請自行建立)
[root@localhost ~]# vi /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是否可傳輸資料
在A主機上建立要備份的目錄及資料/home/backup/anthony
在B主機上建立要備份的目錄/home/backup/
[root@localhost ~]# rsync -rvlHpogDtS --password-file=/etc/rsyncd.secrets /home/backup/* root@192.168.0.111::web
#rsync結束後會看到下列訊息
sending incremental file list
anthony
sent 76 bytes received 27 bytes 206.00 bytes/sec
total size is 5 speedup is 0.05
3設定排程
如果剛才的同步指令沒有問題的話。就可以開始設定排程了
3.1先自行寫一個rsync 的script 用來設定排程
[root@localhost ~]# vi /root/bin/rsync.sh #存放在/root/bin/(存放位置可自訂)
#!/bin/sh
/usr/bin/rsync -rvlHpogDtS --password-file=/etc/rsyncd.secrets /home/backup/* root@192.168.0.111::web
3.2設定排程
[root@localhost ~]# crontab -e
0 0 * * * /root/bin/rsync.sh
錯誤訊息
1.@ERROR: auth failed on module diamond
請將密碼檔修改為 600 即可解決
2.rsync: mkstemp "/.anthony.v6xvr6" (in web) failed: Permission denied (13)
修改 SeLinux 權限
讓無權限的使用者可以寫入
# setsebool -P allow_rsync_anon_write=1
設定目錄寫入權限
# chcon -t public_content_rw_t /home/backup
應該是在B主機上進行設定,但我是連A主機都設定以免出錯
完全按你的设定,一模一样的,就可以运行了,之前搞好久搞不定。不枉费我翻墙来看文章,谢谢
回覆刪除