Backup + Rsync for Linux

SERVER 端
[1.] apt-get install rsync
 
[2.] 啟動 rsync

      第一種方式
         vi /etc/xinetd.d/rsync

disable = no

         service xinetd restart

 

      第二種方式
         執行
            rsync --daemon
         或者
            rsync --daemon --address=192.168.1.12 --port=873 --config=/etc/rsyncd.conf


         注意,當無法啟動,原因會是/etc/rsyncd.conf不存在,可先 touch /etc/rsyncd.conf
 
[3.] vi /etc/rsyncd.conf

max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
 
[share1]
   comment = cross's share1
   path=/tmp/share1
   auth users=cross
   uid=root
   gid=root
   secrets file=/etc/rsyncd.secrets
   read only=no
[share2]
   comment = cross's share2
   path=/tmp/share2
   auth users=cross2
   uid=root
   gid=root
   secrets file=/etc/rsyncd.secrets
   read only=no
   hosts allow=192.168.1.0/24 10.1.1.0/24 *.ssorc.tw

參數說明:

[host]               # 代表備份主機代號
comment
path                  # 備份資料放置的路徑
port                   # 定義Listen port
address             # 定義Listen address
max connects    # 最大連線數
auth users         # 定義授權的帳號
uid                     # 傳輸中執行時的uid
gid                     # 傳輸中執行時的gid
secrets file         # 認證密碼檔的位置
read only           # 是否唯讀
hosts allow        # 允許主機
ignore errors      # 忽略I/O錯誤
dont compress   # 傳輸過程中不壓縮的檔
                          # 預設是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

[4.] vi /etc/rsyncd.secrets

cross:123456
cross2:1234567

[5.] chmod 600 /etc/rsyncd.conf /etc/rsyncd.secrets

[6.] 測試執行
         rsync -vv localhost::

share1 cross's share1
share2 cross's share2

Client 端

rsync [option] [source] [destination]

測試,需要手動輸入password
   rsync -av /var/log/httpd cross@serverip::share1

或者
   rsync -av /var/log/httpd rsync://cross@localhost:873/share1

如果是
   rsync -av cross@serverip::share1 /var/log/httpd

或者,備份的方向就相反了
   rsync -av rsync://cross@serverip:873/share1 /var/log/httpd

測試,無需手動輸入password
   vi /etc/rsyncd.secrets

123456

   chmod 600 /etc/rsyncd.secrets
   rsync -av --password-file=/etc/rsyncd.secrets /var/log/httpd cross@serverip::share1
rsyncd.secrets當中的password只能存在一行,所以其它rsync需指定其它rsyncd.secrets ???

參數說明:

-v                 # verbose
-a                 # archive mode,同等-rlptgoD,但沒有-H
-r                  # 是recursive
-R                 # 保留相對路徑,才不會讓子目錄與parent放在同一層
-u                 # destination(receiver)的檔案較新時,忽略
-d                 # without rescursive
-l                  # copy symlinks as symlinks
-H                # 保留 hard links
-p                 # 保留權限
-o                 # 保留owner
-g                 # 保留group
-D                # 保留devices
-t                  # 保留times
-S                 # 有效率的處理稀少檔案
-e                 # 指的是使用 什麼指令進行連線
                    # -e ssh
                    # --rsh=/usr/bin/ssh
--delete        # 是指如果source端(sender)少了某一檔案,那destination端也應把這少的檔案刪除,保持一致
-z                 # 傳輸當中進行壓縮
--progress    # 顯示出詳細的進度情況
--stats           # 顯示統計

ChangeLog 2006/11/18,建議指令 rsync -aSH --delete

 

使用ssh,多了安全加密

   rsync -aSH --delete -e 'ssh -l root' rsync.server::s_path d_path

 

但如果要直接用 ssh方式,那 rsync server(873)其實就不用架設了,

更方便的是可以隨時指定要同步的目錄,不用再定義在 rsyncd.conf裡了。

   rsync -aSH --delete -e 'ssh -l root' server:/root/  d_path

 

或者是 rsync -aSH --delete root@server:/root/  d_path

 

[Q&A]

rsync -avSH --delete --password-file=/etc/rsyncd.secrets     /path/*         cross@10.1.1.2::share

 

#----------------------------------------------------------------------rsync client------rsync server

#----------------------------------------------------------------------master-----------slaver

此指令在rsync client 執行的,

假如來源端已無某個檔案存在時,'*' 參數會使當你要用--delete功能時,讓程式有錯誤產生,

且'*'也會讓如果來源端已沒有這檔案了,目的端還是會有這檔案的存在,--delete功能無作用。

會多加' * ',也是為了rsync此路徑裡的檔案,解決方式,只能先切換至此路徑,再將來源端路徑設為 ' ./ '。

不過後來又經過測式,/path/,rsync 認定是此目錄裡的檔案,而/path,則認定為此目錄,也就是說可以不管'*'。


補 - 2008/02/02
假如加了 -R 參數,它是用來保留來源目錄完整路徑,不過此時 /path 與 /path/ 的功用也就失效了


[Q1:] password file must not be other-accessible
      continuing without password file
      Password:
[A1:] 表示 rsyncd.secrets 的檔案權限屬性不對,應設為 600
 
[Q2.] @ERROR: auth failed on module xxxxx
      rsync: connection unexpectedly closed (90 bytes read so far)
      rsync error: error in rsync protocol data stream (code 12) at io.c(150)
[A2:] 密碼設錯, 無法登入成功, 檢查 rsyncd.secrets 中的密碼設定, 二端是否一致?

標籤: 備份
評論: 0 | 引用: 0 | 閱讀: 1764 | 列印 | 文件 | 轉發

發表評論
暱 稱: 密 碼:
網 址: E - mail:
驗證碼: 驗證碼圖片 選 項:
頭 像:
內 容:
  • 粗體
  • 斜體
  • 底線
  • 插入圖片
  • 超連結
  • 電子郵件
  • 插入引用
  • 表情符號