當前位置: 首頁>>技術教程>>正文


使用Rsync進行本地和遠程數據同步及備份

Rsync是一個非常有用的工具,它允許Linux係統管理員在本地或與遠程文件係統同步數據。使用rsync比簡單地複製數據更方便,因為它能夠主動發現和同步源和目標之間的差異。該程序具有:保留標準和擴展文件係統權限、在傳輸過程中壓縮數據等選項。我們將在本指南中看到最常用的一些功能。

在本教程中,您將學習到:

  • 如何使用rsync同步數據
  • 如何通過ssh在遠程文件係統上使用rsync
  • 如何通過rsync守護進程將rsync與遠程文件係統一起使用
  • 如何從同步中排除文件

Rsync Examples

Rsync-用法介紹

讓我們從rsync基本用法開始。假設我們在本地文件係統上有一個目錄,並且我們想將其內容與另一個目錄(可能在外部USB設備上)進行同步,以便創建文件的備份。在示例中,源目錄為/mnt/data/source,目的地將掛載在/run/media/egdoc/destination。源包含兩個文件:file1.txt file2.txt,而目的地目錄為空。第一次運行rsync時所有數據被複製。如果現在列出目標目錄內容,則可以看到它現在包含源文件:

$ ls /run/media/egdoc/destination/ -l
total 0
-rw-r--r--. 1 egdoc egdoc 0 Oct  6 19:42 file1.txt
-rw-r--r--. 1 egdoc egdoc 0 Oct  6 19:42 file2.txt

隨後,我們運行rsync來同步兩個目錄,僅複製新文件和修改過的文件:這將節省大量時間和資源。讓我們驗證一下:首先,我們在源目錄中修改file1.txt的內容:

$ echo linuxconfig > /mnt/data/source/file1.txt

然後,我們再次運行rsync,觀察輸出:

$ rsync -av /mnt/data/source/
/run/media/egdoc/destination
sending incremental file list
file1.txt

sent 159 bytes  received 35 bytes  388.00 bytes/sec
total size is 12  speedup is 0.06

唯一複製的文件是我們修改的文件file1.txt。

創建源到目標的鏡像副本

默認rsync隻需確保將源目錄中的所有文件(指定為例外的文件除外)都複製到了目的地:它不會使兩個目錄保持相同,也不會刪除文件;因此,如果我們要創建源到目標的鏡像副本,則必須使用--delete選項,這將刪除僅在目標內部存在的文件。

假設我們創建一個名為file3.txt在目標目錄中:

$ touch /run/media/egdoc/destination/file3.txt

該文件在源目錄中不存在,因此如果我們運行rsync --delete選項,將其刪除:

$ rsync -av --delete /mnt/data/source/ /run/media/egdoc/destination
sending incremental file list
deleting file3.txt
./

sent 95 bytes  received 28 bytes  246.00 bytes/sec
total size is 0  speedup is 0.00

由於這種同步可能會造成破壞,因此您可能需要先使用--dry-run選項,以便使程序顯示將要執行的操作,而無需實際修改文件係統。

遠程同步文件

到目前為止,我們已經了解了如何使用rsync同步兩個本地文件係統。該程序還可以通過遠程 shell (例如,rsh或者ssh)或者rsync守護程序遠程同步文件。我們將探討這兩種方法。

通過SSH運行rsync

對於我們的示例,我們仍將使用與先前示例相同的源目錄,但作為目標,我們將使用具有IP(192.168.122.32)的遠程計算機上的目錄。之前,我在計算機上設置了具有基於密鑰登錄名的openssh服務器,因此無需提供密碼即可訪問它。

我們如何通過ssh運行rsync?首先,要使遠程同步生效,必須在源計算機和遠程計算機上都安裝rsync。在現代版本的rsync中默認情況下使用ssh;要使用另一個遠程 shell 程序,或顯式聲明該 shell 程序,我們可以使用-e選項並以它作為參數。假設我們在遠程機器上的目標目錄是/home/egdoc/destination,我們可以運行:

$ rsync -av -e ssh /mnt/data/source/ egdoc@192.168.122.32:/home/egdoc/destination

請注意,我們指定了目的地<user>@<machine address>:/path/to/directory

通過rsync守護程序聯係遠程計算機

與遠程計算機同步文件的另一種方法是使用rsync daemon(守護進程)。顯然,這需要在目標計算機上安裝並運行該守護程序。

假設rsync守護程序正在偵聽端口873(默認),在遠程計算機上,我們可以通過運行以下命令與它聯係:

$ rsync -av /mnt/data/source/ 192.168.122.32:/home/egdoc/destination

另外,我們可以使用rsync URL

$ rsync -av /mnt/data/source/ rsync://192.168.122.32/home/destination

在兩個示例中,home(在命令中突出顯示),不代表遠程計算機上的目錄名稱,而是資源的名稱(在rsync術語中稱為module),由管理員配置,並可以通過rsync守護程序進行訪問。該module可以指向文件係統上的任何路徑。

從同步中排除文件

有時我們想從同步中排除一些文件或目錄。基本上有兩種方法可以完成此任務:通過直接指定排除模式--exclude(可以通過重複該選項來指定多個模式),也可以將所有模式寫入文件(每行一個)。使用後一種方法時,我們必須將文件路徑作為參數傳遞給--exclude-from選項。

與該模式匹配的所有文件和目錄都將從同步中排除。例如,要排除所有擴展名為”.txt”的文件,我們將運行:

$ rsync -av /mnt/data/source/ /run/media/egdoc/destination --exclude=*.txt

結論

在本文中,我們介紹了rsync,這是一個非常有用的工具,可用於同步本地和遠程文件係統上的文件和目錄。我們學習了該程序最常用的選項,它能讓我們完成了什麽任務,如何指定源目錄和目標目錄,以及用來聯係遠程文件係統的方法。最後,我們了解了如何從同步中排除文件,如何直接或在文件中指定排除模式。
rsync

參考資料

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4406.html,未經允許,請勿轉載。