在本地复制大型目录树? cp还是rsync?

Modified on: Wed, 13 Nov 2019 01:20:02 +0800

我必须复制一个大的目录树,大约1.8 TB。这都是本地的。出于习惯,我会使用rsync,但我想知道是否有重点,如果我应该使用cp

我担心权限和uid / gid,因为它们必须保留在副本中(我知道rsync会这样做)。和符号链接一样。

目的地为空,所以我不必担心有条件地更新某些文件。这是所有本地磁盘,所以我不必担心ssh或网络。

我之所以远离rsync,是因为rsync可能比我需要的更多。 rsync校验和文件。我不需要那样,并担心它可能需要比cp更长的时间。

那你算一下,rsynccp

作者:Carolus,Rory

最佳答案

我会使用rsync,因为这意味着如果它因任何原因被中断,那么您可以轻松地以很少的成本重新启动它。作为rsync,它甚至可以通过大文件重新启动。正如其他人所说,它可以轻松排除文件。保留大多数东西的最简单方法是使用-a标志 - 'archive。'所以:

rsync -a source dest

虽然-a(请参阅-lpgo)保留了UID / GID和符号链接,但您的问题意味着您可能需要完整副本文件系统信息;和-a不包括硬链接,扩展属性或ACL(在Linux上)或上面的资源分支(在OS X上)。因此,对于强大的文件系统副本,你需要包含这些标志:

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

默认cp将再次启动,但-u标志将“仅在SOURCE文件比目标文件更新时或目标文件丢失时才复制”。如果必须重新启动并保留权限,-a(archive)标志将是递归的,而不是重新复制文件。所以:

cp -au source dest

相关问答

添加新评论