Linux
在本地複制大型目錄樹?cp還是rsync?
我必須複製一個大目錄樹,大約 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