Rsync 差不多可以代替 cp 和 scp,此外,斷點續傳是重啟有效的。尾部的斜杠也有著不同的意思,請閱讀 man 頁面......這里有一些例子:
拷貝目錄中所有內容:
#?rsync?-a?/home/colin/?/backup/colin/
#?rsync?-a?/var/?/var_bak/
#?rsync?-aR?--delete-during?/home/user/?/backup/??????#?使用相對路徑(看下面)
同之前一樣,但使用了壓縮和網絡。Rsync 使用 SSH 進行傳輸,并且使用 SSH 密鑰,如果設置的話。和 SCP 一樣使用 ":"。一個典型的拷貝:
#?rsync?-axSRzv?/home/user/?user@server:/backup/user/
排除在 /home/user/ 中任何 tmp 目錄,并且保持相對目錄層次結構,遠程目錄的結構就是 /backup/home/user/。典型的用于備份的命令。
#?rsync?-azR?--exclude?/tmp/?/home/user/?user@server:/backup/
SSH 連接使用端口 20022:
#?rsync?-az?-e?'ssh?-p?20022'?/home/colin/?user@server:/backup/colin/
使用 rsync 守護進程(使用"::")是很快的,但沒有透過 SSH 加密。 位置 /backup 定義在了配置文件 /etc/rsyncd.conf 中。變量 RSYNC_PASSWORD 可以設置用來免除手動輸入密碼。
#?rsync?-axSRz?/home/?ruser@hostname::rmodule/backup/
#?rsync?-axSRz?ruser@hostname::rmodule/backup/?/home/????#?回拷貝
一些重要選項:
-
`-a, --archive`?歸檔模式,等于 -rlptgoD (非 -H)
-
`-r, --recursive`?對子目錄以遞歸模式處理
-
`-R, --relative`?使用相對路徑名
-
`-H, --hard-links`?保留硬鏈結
-
`-S, --sparse`?對稀疏文件進行特殊處理以節省DST的空間
-
`-x, --one-file-system`?不跨越文件系統邊界
-
`--exclude=PATTERN`?指定排除不需要傳輸的文件模式
-
`--delete-during`?傳輸期間刪除
-
`--delete-after`?傳輸結束以后再刪除
### 在 Windows 上使用 Rsync
可以通過 cygwin 或 獨立打包的?[cwrsync](http://sourceforge.net/projects/sereds/)?來在 Windows 上運行 rsync。這對于自動備份來說非常方便。只裝其中一個(_不是兩個_),然后添加路徑到 Windows 系統變量中:# 控制面板 -> 系統 -> 高級標簽,環境變量按鈕。編輯 "Path" 添加 rsync 的安裝路徑,比如:C:\Program Files\cwRsync\bin 或者 C:\cygwin\bin。這可以讓?`rsync`?和?`ssh`?可用于 Windows 命令窗口中。
### 公鑰認證
Rsync 是自動使用 SSH 隧道的,因此在服務端使用 SSH 認證。自動備份可免受用戶的影響,rsync 命令對于使用 SSH 公鑰認證可以不需要密碼。
下面所有的命令都可在 windows 控制臺中執行。在控制臺(開始 -> 運行 -> cmd)中像在?[SSH](http://cb.vu/unixtoolbox_zh_CN.xhtml#ssh)?中描述的那樣創建和上傳密鑰,根據你的情況改變 "user" 和 "server"。如果文件 authorized_keys2 不存在,拷貝 id_dsa.pub 成 authorized_keys2 并上傳它。
#?ssh-keygen?-t?dsa?-N?''???????????????????#?創建密鑰對
#?rsync?user@server:.ssh/authorized_keys2?.?#?從服務器拷貝本地文件
#?cat?id_dsa.pub?>>?authorized_keys2????????#?或者使用編輯器添加這個公鑰
#?rsync?authorized_keys2?user@server:.ssh/??#?拷貝文件回服務器
#?del?authorized_keys2??????????????????????#?刪除本地拷貝
現在測試一下(在同一行里面):
rsync?-rv?"/cygdrive/c/Documents?and?Settings/%USERNAME%/My?Documents/"?\
'user@server:My\?Documents/'
### 自動備份
使用批處理文件自動備份并添加到任務計劃(程序 -> 附件 -> 系統工具 -> 任務計劃)。舉個例子,創建批處理文件 backup.bat 取代 user@server。
@ECHO?OFF
REM?rsync?the?directory?My?Documents
SETLOCAL
SET?CWRSYNCHOME=C:\PROGRAM?FILES\CWRSYNC
SET?CYGWIN=nontsec
SET?CWOLDPATH=%PATH%
REM?uncomment?the?next?line?when?using?cygwin
SET?PATH=%CWRSYNCHOME%\BIN;%PATH%
echo?Press?Control-C?to?abort
rsync?-av?"/cygdrive/c/Documents?and?Settings/%USERNAME%/My?Documents/"?\
'user@server:My\?Documents/'
pause