rsync 的傳輸方式至少可以透過三種方式來運作:
- 在本機上直接運作,用法就與 cp 幾乎一模一樣,例如:
rsync -av /etc /tmp (將 /etc/ 的資料備份到 /tmp/etc 內) - 透過 rsh 或 ssh 的通道在 server / client 之間進行資料傳輸,例如:
rsync -av -e ssh [email protected]:/etc /tmp (將 rsh.server 的 /etc 備份到本地主機的 /tmp 內) - 直接透過 rsync 提供的服務 (daemon) 來傳輸,此時 rsync 主機需要啟動 873 port:
1. 你必須要在 server 端啟動 rsync , 看 /etc/xinetd.d/rsync 即可;
2. 你必須編輯 /etc/rsyncd.conf 設定檔;
3. 你必須設定好 client 端連線的密碼資料;
4. 在 client 端可以利用:rsync -av user@hostname::/dir/path /local/path
其實三種傳輸模式差異在於有沒有冒號 (:) 而已,本地端傳輸不需要冒號,透過 ssh 或 rsh 時,就得要利用一個冒號 (:), 如果是透過 rsync daemon 的話,就得要兩個冒號 (::)?
#!/bin/bash
# /backup/rsync.sh
remotedir=/home/backup/
basedir=/backup/weekly
host=127.0.0.1
id=dast
rsync -av -e ssh $basedir ${id}@${host}:${remotedir}
在local端的設定
local端所需要做的僅是執行?/usr/bin/rsync,rsync 做為同步處理時,常用的參數如下:
- -a,?–archive: 這最常被使用的參數,相當於同時使用?-rlptgoD,即:
- -r: 子目錄遞迴
- -l: 複製符號連結
- -p: 複製檔案權限
- -t: 複製時間屬性
- -g: 複製群組屬性
- -o: 複製擁有者屬性
- -D: 複製裝置屬性
- -v,?–verbose: 顯示詳細資訊
- -z,?–compress: 壓縮傳輸的資料,以減少傳輸量
- -R,?–relative: 備份後,使用本地端完整的路徑 (不加此參數,則為相對路徑)
- -H,?–hard-links: 保留檔案的連結
- -S,?–sparse: 使有比較有效率的方式處理零散的檔案
- -P: 等同加了?–partial –progress,即:
- –partial: 保留傳輸中斷的檔案以進行續傳
- –progress: 即時顯示檔案傳輸的進度
- –delete: 本地端如果刪掉檔案,則備份伺服器也同時刪除該檔案,以保持兩邊檔案的一致
- –password-file: 密碼檔的位置 (如不輸入此參數,則程式執行時會詢問你)
本地端的密碼檔也是純文字檔,同樣是使用明碼,就是備份伺服器所設定的那個密碼。例如我的密碼檔放在?/etc/rsync_client.passwd,那檔案的內容就只是用戶的密碼,也就是說若這local端有可能以一個以上的rsync帳號備份的話,密碼檔要再多製做一個不同名的。
新增密碼檔之後,同樣要將權限設為 600: chmod 600 /etc/rsync_client.passwd
遠端同步的語法: /usr/bin/rsync [-參數] [–參數] [–password-file=密碼檔位置] [本地端備份來源路徑] [用戶名稱@遠端備份伺服器位址::目標路徑] 如: /usr/bin/rsync -avHP –delete –password-file=/etc/rsync_client.passwd /temp [email protected]::rsync/192.168.0.1_data
rsync -avprogSHP –delete $HOME/data user@serverip::rsync/192.168.0.1_data
發佈留言
很抱歉,必須登入網站才能發佈留言。