跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 一般任務 / 使用 RSync 複製檔案
適用範圍 SUSE Linux Enterprise Server 15 SP3

11 使用 RSync 複製檔案

當今時代,使用者通常都會有數部電腦:家用機器和辦公機器、筆記型電腦、智慧型電話或平板電腦。因而,在多個裝置之間保持檔案和文件同步的任務就變得越發重要。

警告
警告:資料遺失風險

您在開始使用同步工具之前,應該先熟悉其特性和功能。請務必備份您的重要檔案。

11.1 概念綜覽

對於要透過慢速網路連接同步大量資料的情況,Rsync 提供了可靠的方法來僅傳輸檔案中的變更。此方法不僅適用於文字檔案,還適用於二進位檔案。為了偵測檔案之間的差異,Rsync 將檔案分為多個區塊,並計算它們的檢查總數。

偵測變更對運算能力有一定的要求。因此,請確定兩端的機器均具有足夠的資源,包括 RAM。

當需要定期傳輸大量僅包含微小變更的資料時,Rsync 特別實用。進行備份時就常常用到該工具。Rsync 也非常適合用來鏡像預備伺服器,此類伺服器將 Web 伺服器的完整目錄樹儲存到 DMZ 內的某部 Web 伺服器中。

Rsync 並不是同步工具,雖然它的名字看上去有些像。Rsync 工具一次只能在一個方向複製資料。它不會也不能反向複製資料。如果您需要既能同步來源又能同步目標的雙向工具,請使用 Csync。

11.2 基本語法

Rsync 是一個指令行工具,基本語法如下:

rsync [OPTION] SOURCE [SOURCE]... DEST

您可以在任何本地或遠端機器上使用 Rsync,前提是您擁有相應的存取權限和寫入權限。可以有多個 SOURCE 項目。SOURCEDEST 預留位置可以是路徑和/或 URL。

下面介紹一些最常用的 Rsync 選項:

-v

輸出較詳細的文字

-a

歸檔模式;以遞迴方式複製檔案並保留時間戳記、使用者/群組擁有權、檔案權限和符號連結

-z

壓縮傳輸的資料

注意
注意:末尾斜線計數

使用 Rsync 時,應特別注意結尾斜線。目錄後面的結尾斜線表示目錄的內容。沒有結尾斜線表示目錄自身

11.3 在本地複製檔案和目錄

下面的描述假設目前的使用者擁有 /var/backup 目錄的寫入權限。若要將單個檔案從機器上的一個目錄複製到另一個路徑,請使用以下指令:

tux > rsync -avz backup.tar.xz /var/backup/

檔案 backup.tar.xz 會複製到 /var/backup/,絕對路徑是 /var/backup/backup.tar.xz

請勿忘記在 /var/backup/ 目錄後面加上結尾斜線!如果不插入斜線,檔案 backup.tar.xz 會複製到 /var/backup (檔案) 中,而不是 /var/backup/ 目錄中!

複製目錄與複製單個檔案相似。下面的範例將目錄 tux/ 及其內容複製到 /var/backup/ 目錄中:

tux > rsync -avz tux /var/backup/

在絕對路徑 /var/backup/tux/ 中可找到副本。

11.4 從遠端複製檔案和目錄

兩部機器上都需要有 Rsync 工具。若要從遠端目錄複製檔案或將檔案複製到遠端目錄,需要提供 IP 位址或網域名稱。如果本地機器和遠端機器上目前的使用者名稱相同,則可以不指定使用者名稱。

若要使用相同的使用者 (在本地和遠端主機上) 將檔案 file.tar.xz 從本地主機複製到遠端主機 192.168.1.1,請使用以下指令:

tux > rsync -avz file.tar.xz  tux@192.168.1.1:

依據您的個人偏好,也可以使用下面的指令,它們的作用相同:

tux > rsync -avz file.tar.xz 192.168.1.1:~
tux > rsync -avz file.tar.xz 192.168.1.1:/home/tux

在所有使用標準組態的情況下,系統會提示您輸入遠端使用者的密碼片語。此指令會將 file.tar.xz 複製到使用者 tux 的主目錄 (通常為 /home/tux)。

從遠端複製目錄與在本地複製目錄相似。下面的範例將目錄 tux/ 及其內容複製到 192.168.1.1 主機上的遠端目錄 /var/backup/

tux > rsync -avz tux 192.168.1.1:/var/backup/

假設您在主機 192.168.1.1 上擁有寫入權限,便可在絕對路徑 /var/backup/tux 中找到副本。

11.5 設定和使用 Rsync 伺服器

Rsync 可做為在預設連接埠 873 上監聽內送連接的精靈 (rsyncd) 執行。此精靈可以接收複製目標

下面的描述介紹如何在 jupiter 上建立具有備份目標的 Rsync 伺服器。此目標可用於儲存您的備份。若要建立 Rsync 伺服器,請執行以下操作:

程序 11.1︰ 設定 Rsync 伺服器
  1. 在 jupiter 上,建立用於儲存您所有備份檔案的目錄。在此範例中,我們使用 /var/backup

    root # mkdir /var/backup
  2. 指定擁有權。在此範例中,該目錄為使用者群組中的使用者 tux 所擁有:

    root # chown tux.users /var/backup
  3. 設定 rsyncd 精靈。

    我們將組態檔案分割成一個主檔案,和一些用於存放您的備份目標的模組。如此,以後便可更輕鬆地新增其他目標。全域值可以儲存在 /etc/rsyncd.d/*.inc 檔案中,而模組放置在 etc/rsyncd.d/*.conf 檔案中:

    1. 建立目錄 /etc/rsyncd.d/

      root # mkdir /etc/rsyncd.d/
    2. 在主組態檔案 /etc/rsyncd.conf 中,新增以下幾行:

      # rsyncd.conf main configuration file
      log file = /var/log/rsync.log
      pid file = /var/lock/rsync.lock
      
      &merge /etc/rsyncd.d 1
      &include /etc/rsyncd.d 2

      1

      /etc/rsyncd.d/*.inc 檔案中的全域值合併到主組態檔案中。

      2

      /etc/rsyncd.d/*.conf 檔案中載入任何模組 (或目標)。這些檔案不應包含任何對全域值的參考。

    3. 在檔案 /etc/rsyncd.d/backup.conf 中透過以下幾行建立您的模組 (您的備份目標):

      # backup.conf: backup module
      [backup] 1
         uid = tux 2
         gid = users 2
         path = /var/backup 3
         auth users = tux  4
         secrets file = /etc/rsyncd.secrets 5
         comment = Our backup target

      1

      備份目標。可以使用您喜歡的任何名稱。但最好依照目標的用途來命名,並使用在 *.conf 檔案中所用的相同名稱。

      2

      指定在進行檔案傳輸時所用的使用者名稱或群組名稱。

      3

      定義用於儲存備份的路徑 (從步驟 1 中)。

      4

      指定所允許使用者的逗號分隔清單。清單以最簡單的方式包含允許連接到此模組的使用者名稱。在我們的範例中,只允許使用者 tux

      5

      指定包含使用者名稱和明文密碼的行所在檔案的路徑。

    4. 建立包含以下內容的 /etc/rsyncd.secrets 檔案,並取代 PASSPHRASE

      # user:passwd
      tux:PASSPHRASE
    5. 確認該檔案只有 root 使用者可讀取:

      root # chmod 0600 /etc/rsyncd.secrets
  4. 透過以下指令啟動並啟用 rsyncd 精靈:

    root # systemctl enable rsyncd
    root # systemctl start rsyncd
  5. 測試是否可存取 Rsync 伺服器:

    tux > rsync jupiter::

    您應該會看到類似如下的回應:

    backup          Our backup target

    若非如此,請檢查您的組態檔案、防火牆和網路設定。

上述步驟建立了 Rsync 伺服器,現在可以使用它來儲存備份。本範例也建立了監聽所有連接的記錄檔。這個檔案是儲存在 /var/log/rsyncd.log。如果您要對傳輸進行除錯,此檔案非常實用。

若要列出備份目標的內容,請使用以下指令:

tux > rsync -avz jupiter::backup

此指令會列出伺服器上 /var/backup 目錄中存在的所有檔案。這個要求也會記錄在 /var/log/rsyncd.log 記錄檔中。若要開始實際傳輸,請提供來源目錄。請使用 . 來代表目前的目錄。例如,下面的指令會將目前的目錄複製到 Rsync 備份伺服器:

tux > rsync -avz . jupiter::backup

依預設,Rsync 不會在執行時刪除檔案和目錄。若要允許刪除,必須另外指定選項 --delete。若要確保不會刪除較新的檔案,則可以改用 --update 選項。任何產生的衝突都必須手動解決。

11.6 更多資訊

Csync

雙向檔案同步工具,請參閱 https://csync.org/

RSnapshot

建立增量備份,請參閱 https://rsnapshot.org

Unison

與 CSync 類似的檔案同步工具,但具有圖形介面,請參閱 https://www.seas.upenn.edu/~bcpierce/unison/

Rear

一個災難復原架構,請參閱《SUSE Linux Enterprise High Availability Extension 管理指南》中的「使用 Rear (Relax-and-Recover) 進行災難復原」一章。