在 FreeBSD 上使用 rsync 備份/傳輸資料

出自 啟示錄
跳至導覽 跳至搜尋

作者:Joe Horn( joehorn AT leobbs DOT net )

授權:[CC授權:姓名標示-非商業性-相同方式分享 2.5]

附註:安裝步驟適用於 FreeBSD 平台,其它 UNIX-Like OS 可能有所不同。


使用軟體:


前言

Rsync 的意思為 remote sync ,這套軟體的特性如下:

  1. 可以鏡像保存整個目錄樹和文件系統。
  2. 可以很容易做到保持原來文件的權限、時間、hard link、soft link 等等。
  3. 無須特殊權限即可安裝。
  4. 可以使用 rcp,ssh 等方式來傳輸文件,也可以通過直接的 socket 連接。
  5. 支援匿名傳輸。

這份文件將以最簡單的方式說明 Rsync 的使用與安裝。

範例說明

  • Server 端 IP 為 192.168.1.1 , Client 端 IP 為 192.168.1.2
  • Server 端開放匿名抓取的目錄為 /anon-mirror
  • Server 端開放帳號登入抓取的目錄為 /mirror1 與 /mirror2
    • 開放抓取 /mirror1 的帳號為 joehorn ,密碼為 passwd
    • 開放抓取 /mirror2 的帳號為 joehorn ,密碼為 passwd
    • 開放抓取 /mirror2 的帳號為 leobbs ,密碼為 wdpass
  • Client 端放置資料的目錄同 Server 端.

安裝 Rsync

Client 與 Server 端都必須安裝 Rsync 這套軟體,請使用以下指令:

# cd /usr/ports/net/rsync
# make install clean

設定 Rsync Daemon

為了讓 Server 端啟動 rsyncd ,請在 /etc/rc.conf 加入這行 :

rsyncd_enable="YES"

請編輯 /usr/local/etc/rsyncd.conf ,更改裡面的設定,詳細參數使用可以 man rsyncd.conf 。

以上面的範例,Server 端的設定如下:

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
uid = nobody
gid = nogroup
use chroot = yes
max connections = 4

[anonmirror]
path = /anon-mirror
comment = Anonymous Mirror
ignore errors
read only = yes
list = no

[mirror1]
path = /mirror1
comment = Account login mirror1
ignore errors
read only = yes
list = no
auth users = joehorn
secrets file = /usr/local/etc/rsync.passwd

[mirror2]
path = /mirror2
comment = Account login mirror2
ignore errors
read only = yes
list = no
auth users = joehorn, leobbs
secrets file = /usr/local/etc/rsync.passwd

接下來建立帳號密碼檔。 若依照上方之設定,則是必須建立 /usr/local/etc/rsync.passwd 這個檔案,檔案內容如下:

joehorn:passwd
leobbs:wdpass

rsyncd 為了保護您資料的安全,避免洩漏,將會強制要求您將帳號密碼檔的讀寫權限設定為 640 或 600 。 根據範例,將是使用以下指令:

# chmod 600 /usr/local/etc/rsync.passwd

啟動 Rsync Daemon

於 Server 端啟動 rsyncd ,請使用以下指令:

# /usr/local/etc/rc.d/rsyncd.sh start

使用 Rsync

  • 在 Client 端抓取 /anon-mirror :
# rsync -vzrtopg --progress --delete 192.168.1.1::anonmirror /anon-mirror
  • 參數中 -vzrtopg 裡的 v 是 verbose,z 是壓縮,r 是 recursive,topg 都是保持檔案原有屬性如 owner、time 的參數,--progress 是顯示出詳細的進度情況,--delete 是指如果 Server 端刪除了這一個檔案,那 Client 端也會把檔案刪除,保持真正的一致,其他參數請 man rsync 。
  • 以 joehorn 這個帳號手動作 rsync 來抓取 /mirror1 :
# rsync -vzrtopg --progress --delete joehorn@192.168.1.1::mirror1 /mirror1
接下來會出現 Password: 這個 prompt 要求您輸入密碼.
  • 讓 leobbs 這個帳號自動抓取 /mirror2 ,請先編輯自己欲使用的密碼檔,例如 ~/rsync.pass ,內容只需要密碼。
範例如下:
wdpass
接下來把這個檔案 chmod 成 600:
# chmod ~/rsync.pass
再用這行指令來抓取資料(也可以丟進 cron 作):
# rsync -qzrtopg --delete leobbs@192.168.1.1::mirror2 /mirror2 --password-file=~/rsync.pass