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/*         [email protected]::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 中的密碼設定, 二端是否一致?

Related posts 相關文章
備份 VSCode 設定
More...
Linux 救援光碟 SystemRescueCd,支援Windows,也可以遠端備份還原
More...
使用 mondo 線上備份linux centos 系統
More...
linux 的 dd + nc 線上備份主機硬碟
More...

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。