rsync 備份文件

1.rsync特性

可以鏡像保存整個目錄樹和文件系統

可以增量同步數據,文件傳輸效率高,同步時間短

可以保持原有文件的權限、時間等屬性

可以通過ssh加密傳輸

支持匿名傳輸

2.利用rsync搭建遠程備份系統

a:192.168.21.132(rsync服務器)

b:192.168.21.131(客戶端)

配置服務端(a機器):

vim /etc/rsyncd.conf

 

uid=nobody
gid=nobody
use chroot=no
strict modes=yes
max connections=200
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock 
log file=/var/log/rsyncd.log
[test]
path=/tmp
hosts allow=192.168.21.0/24
hosts deny=*
ignore errors
list=false
auth users=backup
secrets file=/etc/rsync.pwd

 

參數意義:

uid:傳輸文件時守護進程應該具有的UID,默認是nobody,表示任意用戶。

gid:傳輸文件時守護進程應該具有的UID,默認是nobody,表示任意用戶組。

use chroot:此選項不可以備份目錄內的指向目錄外的鏈接文件,默認爲yes。

strict modes:指定是否檢查密碼文件的權限。

max connections:指定rsync服務端模塊的最大併發連接數。

pid file:rsync守護進程的pid文件路徑。

lock file:知道支持max connections的鎖文件。

log file:指定rsync日誌的輸出路徑。

[test]:模塊的名稱。

path:指定需要被封的文件或目錄。

igores error:忽略一些無關的IO錯誤。

hosts allow:設置可以連接rsync服務器的主機。

hosts deny:設置禁止連接rsync服務器的主機。

list:設置客戶端請求可以使用的模塊列表時,模塊是否被列出。

auth users:定義客戶端連接模塊的用戶名,與系統用戶無關。

secerts file:指定auth users的密碼文件路徑,格式爲:用戶名:密碼,權限爲600.

cat /etc/rsync.pwd

backup:test

啓動rsync:rsync --daemon

關閉rsync:pkill rsync

配置客戶端(b機器):

只需創建一個secrets file,內容爲服務端指定的密碼,不必寫用戶名。

cat /etc/rsync.pwd

test

同步目錄:

rsync -avzP [email protected]::test --delete /tmp --password-file=/etc/rsync.pwd 

設置rsync開機啓動

 

 

  1. #!/bin/bash 
  2. # rsyncd      Start/Stop the rsyncd daemon. 
  3. # chkconfig: 35 91 62 
  4. # description: rsyncd server 
  5. # processname: rsyncd 
  6. # config: /etc/rsyncd.conf 
  7. # pidfile: /var/run/rsyncd.pid 
  8. # lockfile: /var/run/rsyncd.lock 
  9. # logfile: /var/log/rsyncd.log 
  10. . /etc/init.d/functions 
  11. case "$1" in 
  12.   start) 
  13.         if [ -e /var/run/rsyncd.pid ];then 
  14.                 echo "rsyncd is running" 
  15.         else 
  16.                 /usr/bin/rsync --daemon 
  17.                 if  [ $? -eq 0 ]; then 
  18.                         action "rsyncd start" /bin/true 
  19.                 else 
  20.                         action "rsyncd start" /bin/false 
  21.                 fi 
  22.         fi 
  23.         ;; 
  24.   stop) 
  25.         if [ ! -e /var/run/rsyncd.pid ];then 
  26.                 echo -n  "rsyncd is not running. " 
  27.                 action "rsyncd stop" /bin/false 
  28.         else  
  29.                  killproc  rsync 
  30.                 if [ $? -eq 0 ]; then 
  31.                         action "rsyncd stop" /bin/true 
  32.  
  33.                 else 
  34.                         action "rsyncd stop" /bin/false 
  35.                 fi 
  36.         fi 
  37.         ;; 
  38.   restart) 
  39.         $0 stop 
  40.         $0 start 
  41.         ;; 
  42.   *) 
  43.         echo $"Usage: rsyncd {start|stop|restart}" 
  44.         ;; 
  45. esac  

 

添加服務:chkconfig --add rsyncd

3.rsync+inotify

inotify需在rsync客戶端安裝,監控客戶端指定目錄的變化,然後推送到遠程主機,可以實現遠程同步更新。

  1. #!/bin/bash 
  2. src=/tmp/ 
  3. des=test 
  4. inotifywait -mrq  -e modify,delete,create,attrib $src | while read files 
  5. do 
  6. rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pwd $src [email protected]::$des >/dev/null 2>&1 
  7. done 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章