1. 程式人生 > >rsync - 遠程同步工具

rsync - 遠程同步工具

靈活 col -c bash round rec 刪除 ria let

一直沒有對這個命令太有深入的理解

簡介

rsync 即 remote sync,一個遠程與本地文件同步工具。rsync 使用的算法能夠最小化所需復制的數據,因為它只移動那些修改了的文件。

rsync 是一個非常靈活的同步工具,它也是一種使用該工具的網絡協議名稱。本文中所說的 rsync 都是指同步工具,而非網絡協議。由於它在類 Unix 系統中廣為流行,它也是大多數 Linux 發行版的默認自帶工具。

基本語法

rsync 的基本語法非常簡單,類似於 ssh, scp 和 cp 命令的語法。

例如我們創建兩個目錄和一些文件:

cd ~
mkdir dir1 dir2
touch dir1/file{1..100}

現在 dir1 目錄中有 100 個空文件,一個空目錄 dir2,現在同步 dir1 目錄中的內容到 dir2:

rsync -r dir1/ dir2

-r 選項表示遞歸,這在同步目錄時非常重要。對以上操作,我們也可以用 -a 選項來實現:

rsync -a dir1/ dir2

-a 選項表示 archive,遞歸同步文件,保留符號鏈接,特殊或設備文件,修改時間,用戶組,所有人和權限。一般情況下使用 -r 就可以了。

註意

你也許已經留意到以上示例第一個參數後面的 / 符號,它表示 “dir1 的內容”。

如果沒有 / 符號,例如 rsync -r dir1 dir2,則表示需要同步的對象包括目錄 dir1

,於是在 dir2 目錄結構同步成了 dir2/dir1/[100 files] ,因此在同步之前一定要小心檢查。

要檢查 rsync 即將執行的操作,可以使用 -n --dry-run 選項,該選項會打印出同步結果,但實際上並不做真正的同步操作,一般會增加一個 -v 選項來查看輸出結果,例如:

rsync -anv dir1/ dir2

同步遠程文件

rsync 同步遠程文件語法和 scp 命令相似,只要你擁有遠程 SSH 訪問權限,同時遠程和本地都安裝了 rsync 命令。

推送文件至遠程

rsync -a dir1 [email protected]_host:destination_directory

拉拽文件至本地

rsync -a [email protected]_host:~/path/to/dir1 local_destination_path

無論是推送還是拉拽,第一個參數總是源文件,第二參數才是目標文件。

常用選項

如果你要同步一些未壓縮的文件,你可以使用 -z 選項來壓縮文件並傳輸以減少網絡傳輸量。

rsync -az src dest

另外一個非常有用的選項是 -P,該選項結合了 --progress --partial 兩個選項的功能,--progress 表示顯示同步進度條,--partial 表示斷點續傳。

rsync -azP src dest

要兩個目錄絕對同步,那就必須在目標目錄中刪除源目錄中已刪除的文件。在默認情況下,rsync 不從目標目錄中刪除任何東西,但我們可以使用 --delete 選項來修改這種默認行為:

rsync -a --delete src dest

如果你想要排除某些文件進行同步,你可以使用 --exclude=pattern 選項,多個文件之間使用 , 分隔:

rsync -a --exclude=pattern1,pattern2 src dest

使用不同的 SSH 端口:

rsync -azP -e "ssh -p 2422" src dest

附錄

  1. How To Use Rsync to Sync Local and Remote directories on a VPS

rsync - 遠程同步工具