UNIX RSYNC

2018-11-24 15:21 更新

Rsync 差不多可以代替 cp 和 scp,此外,斷點(diǎn)續(xù)傳是重啟有效的。尾部的斜杠也有著不同的意思,請(qǐng)閱讀 man 頁(yè)面......這里有一些例子:
拷貝目錄中所有內(nèi)容:

# rsync -a /home/colin/ /backup/colin/
# rsync -a /var/ /var_bak/
# rsync -aR --delete-during /home/user/ /backup/      # 使用相對(duì)路徑(看下面)

同之前一樣,但使用了壓縮和網(wǎng)絡(luò)。Rsync 使用 SSH 進(jìn)行傳輸,并且使用 SSH 密鑰,如果設(shè)置的話。和 SCP 一樣使用 ":"。一個(gè)典型的拷貝:

# rsync -axSRzv /home/user/ user@server:/backup/user/

排除在 /home/user/ 中任何 tmp 目錄,并且保持相對(duì)目錄層次結(jié)構(gòu),遠(yuǎn)程目錄的結(jié)構(gòu)就是 /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 守護(hù)進(jìn)程(使用"::")是很快的,但沒(méi)有透過(guò) SSH 加密。 位置 /backup 定義在了配置文件 /etc/rsyncd.conf 中。變量 RSYNC_PASSWORD 可以設(shè)置用來(lái)免除手動(dòng)輸入密碼。

# rsync -axSRz /home/ ruser@hostname::rmodule/backup/
# rsync -axSRz ruser@hostname::rmodule/backup/ /home/    # 回拷貝

一些重要選項(xiàng):

  • -a, --archive 歸檔模式,等于 -rlptgoD (非 -H)

  • -r, --recursive 對(duì)子目錄以遞歸模式處理

  • -R, --relative 使用相對(duì)路徑名

  • -H, --hard-links 保留硬鏈結(jié)

  • -S, --sparse 對(duì)稀疏文件進(jìn)行特殊處理以節(jié)省DST的空間

  • -x, --one-file-system 不跨越文件系統(tǒng)邊界

  • --exclude=PATTERN 指定排除不需要傳輸?shù)奈募J?/p>

  • --delete-during 傳輸期間刪除

  • --delete-after 傳輸結(jié)束以后再刪除

在 Windows 上使用 Rsync

可以通過(guò) cygwin 或 獨(dú)立打包的 cwrsync 來(lái)在 Windows 上運(yùn)行 rsync。這對(duì)于自動(dòng)備份來(lái)說(shuō)非常方便。只裝其中一個(gè)(不是兩個(gè)),然后添加路徑到 Windows 系統(tǒng)變量中:# 控制面板 -> 系統(tǒng) -> 高級(jí)標(biāo)簽,環(huán)境變量按鈕。編輯 "Path" 添加 rsync 的安裝路徑,比如:C:\Program Files\cwRsync\bin 或者 C:\cygwin\bin。這可以讓 rsync 和 ssh 可用于 Windows 命令窗口中。

公鑰認(rèn)證

Rsync 是自動(dòng)使用 SSH 隧道的,因此在服務(wù)端使用 SSH 認(rèn)證。自動(dòng)備份可免受用戶的影響,rsync 命令對(duì)于使用 SSH 公鑰認(rèn)證可以不需要密碼。
下面所有的命令都可在 windows 控制臺(tái)中執(zhí)行。在控制臺(tái)(開(kāi)始 -> 運(yùn)行 -> cmd)中像在 SSH 中描述的那樣創(chuàng)建和上傳密鑰,根據(jù)你的情況改變 "user" 和 "server"。如果文件 authorized_keys2 不存在,拷貝 id_dsa.pub 成 authorized_keys2 并上傳它。

# ssh-keygen -t dsa -N ''                   # 創(chuàng)建密鑰對(duì)
# rsync user@server:.ssh/authorized_keys2 . # 從服務(wù)器拷貝本地文件
# cat id_dsa.pub >> authorized_keys2        # 或者使用編輯器添加這個(gè)公鑰
# rsync authorized_keys2 user@server:.ssh/  # 拷貝文件回服務(wù)器
# del authorized_keys2                      # 刪除本地拷貝

現(xiàn)在測(cè)試一下(在同一行里面):

rsync -rv "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \
'user@server:My\ Documents/'

自動(dòng)備份

使用批處理文件自動(dòng)備份并添加到任務(wù)計(jì)劃(程序 -> 附件 -> 系統(tǒng)工具 -> 任務(wù)計(jì)劃)。舉個(gè)例子,創(chuàng)建批處理文件 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
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)