以 rsync 進行同步鏡相備份

以 rsync 進行同步鏡相備份

我們曾在基礎篇裡面談過 Linux 的備份策略, 該篇曾介紹常用的備份指令,包括 tar, dd, cp 等等,不過當時並未介紹網路,所以有個很棒的網路工具沒有介紹, 那就是這個地方要談到的 rsync 啦!這個 rsync 可以作為一個相當棒的異地備援系統的備份指令喔! 因為 rsync 可以達到類似『鏡相 (mirror) 』的功能呢!

rsync 最早是想要取代 rcp 這個指令的,因為 rsync 不但傳輸的速度快,而且他在傳輸時, 可以比對本地端與遠端主機欲複製的檔案內容,而僅複製兩端有差異的檔案而已,所以傳輸的時間就相對的降低很多! 此外, rsync 的傳輸方式至少可以透過三種方式來運作:
在本機上直接運作,用法就與 cp 幾乎一模一樣,例如:
rsync -av /etc /tmp (將 /etc/ 的資料備份到 /tmp/etc 內)

透過 rsh 或 ssh 的通道在 server / client 之間進行資料傳輸,例如:
rsync -av -e ssh user@rsh.server:/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 的話,就得要兩個冒號 (::) ,應該不難理解啦!因為本地端處理很簡單, 而我們的系統本來就有提供 ssh 的服務,所以,底下鳥哥將直接介紹利用 rsync 透過 ssh 來備份的動作喔。 不過,在此之前咱們先來看看 rsync 的語法吧!
[root@linux ~]# rsync [-avrlptgoD] [-e ssh] [user@host:/dir] [/local/path]
參數:
-v :觀察模式,可以列出更多的資訊;
-q :與 -v  相反,安靜模式,輸出的資訊比較少;
-r :遞迴複製!可以針對『目錄』來處理!很重要!
-u :僅更新 (update),不會覆蓋目標的新檔案;
-l :複製連結檔的屬性,而非連結的目標原始檔案內容;
-p :複製時,連同屬性 (permission) 也保存不變!
-g :保存原始檔案的擁有群組;
-o :保存原始檔案的擁有人;
-D :保存原始檔案的裝置屬性 (device)
-t :保存原始檔案的時間參數;
-I :忽略更新時間 (mtime) 的屬性,檔案比對上會比較快速;
-z :加上壓縮的參數!
-e :使用的通道協定,例如使用 ssh 通道,則 -e ssh
-a :相當於 -rlptgoD ,所以這個 -a 是最常用的參數了!
更多說明請參考 man rsync 的解說!

範例一:將 /etc 的資料備份到 /tmp 底下:
[root@linux ~]# rsync -av /etc /tmp
....前面輸出省略....
sent 23007335 bytes  received 32280 bytes  5119914.44 bytes/sec
total size is 22870014  speedup is 0.99
# 第一次運作時會花比較久的時間,因為首次建立嘛!如果再次備份呢?

[root@linux ~]# rsync -av /etc /tmp
building file list ... done
sent 77105 bytes  received 20 bytes  154250.00 bytes/sec
total size is 22870014  speedup is 296.53
# 瞧!立刻就跑完了!傳輸的資料也很少!因為再次比對,僅有差異的檔案會被複製。

範例二:利用 dmtsai 的身份,將 rsh.server 使用者家目錄複製到 /tmp 
[root@linux ~]# rsync -av -e ssh dmtsai@rsh.server:~ /tmp 
The authenticity of host 'rsh.server (192.168.1.2)' can't be established.
RSA key fingerprint is 29:b8:a9:32:ea:d8:ff:97:6c:42:3b:aa:11:ab:55:dd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rsh.server' (RSA) to the list of known hosts.
dmtsai@rsh.server's password:
receiving file list ... done
....檔案輸出省略....
sent 8436 bytes  received 43224862 bytes  2789245.03 bytes/sec
total size is 43189031  speedup is 1.00

[root@linux ~]# ll -d /tmp/dmtsai
drwxr-xr-x  22 dmtsai dmtsai  4096 Sep 18 23:25 /tmp/dmtsai
# 瞧!這樣就做好備份啦!很簡單吧!
你可以利用上面的範例二來做為備份 script 的參考!不過要注意的是, 因為 rsync 是透過 ssh 來傳輸資料的,所以你可以針對 dmtsai 這個傢伙製作出免用密碼登入的 ssh 金鑰! 如此一來往後異地備援系統就能夠自動的以 crontab 來進行備份了!簡單到爆!

免密碼的 ssh 帳號我們在上頭已經講過了,撰寫 shell script 的能力也是必須要有的! 利用 rsync 來進行你的備份工作吧! ^_^!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值