Linux

在本地複制大型目錄樹?cp還是rsync?

  • March 9, 2020

我必須複製一個大目錄樹,大約 1.8 TB。都是本地的。出於習慣,我會使用rsync,但是我想知道是否有很多意義,以及是否應該使用cp.

我擔心權限和 uid/gid,因為它們必須保存在副本中(我知道 rsync 會這樣做)。以及符號連結之類的東西。

目的地是空的,所以我不必擔心有條件地更新某些文件。都是本地盤,不用擔心ssh或者網路。

我之所以想遠離 rsync,是因為 rsync 可能做的比我需要的更多。rsync 校驗和文件。我不需要那個,並且擔心它可能需要比cp更長的時間。

那麼你認為呢,rsync或者cp

我會使用 rsync,因為這意味著如果它因任何原因被中斷,那麼您可以輕鬆地以很少的成本重新啟動它。並且作為 rsync,它甚至可以通過一個大文件重新啟動。正如其他人提到的,它可以輕鬆排除文​​件。保存大多數東西的最簡單方法是使用-a標誌——“存檔”。所以:

rsync -a source dest

儘管 UID/GID 和符號連結由-a(參見參考資料-lpgo)保留,但您的問題暗示您可能需要文件系統資訊的完整副本;並且-a不包括硬連結、擴展屬性或 ACL(在 Linux 上)或上述內容,也不包括資源分叉(在 OS X 上)。因此,對於文件系統的健壯副本,您需要包含這些標誌:

rsync -aHAX source dest # Linux
rsync -aHE source dest  # OS X

預設 cp 將重新開始,但-u標誌將*“僅在源文件比目標文件新或目標文件失去時複製”*。並且-a(存檔)標誌將是遞歸的,如果您必須重新啟動並保留權限,則不會重新復製文件。所以:

cp -au source dest

引用自:https://serverfault.com/questions/43014