使用同上从 Mac 终端智能地复制文件和目录

同上命令

大多数长期使用命令行的用户都依赖 cp 命令来复制文件和目录,但 Mac OS X 提供了另一种使用“ditto”命令的解决方案。 Ditto 稍微高级一些,但出于多种原因可能对“cp”有利,因为它不仅保留所有权属性和权限,还保留文件资源分支以及文件和文件夹元数据,从根本上确保文件和/或文件夹被复制 正是

此外,ditto 可用于将文件或文件夹复制到源目录,但如果该源尚不存在,ditto 将自动创建它。此外,如果目标文件夹确实存在,则复制的内容将合并到该目标目录中。最后,ditto 还遵循符号链接,如果您是 ln 命令的重度用户,它会特别方便。

为了更好地理解 ditto 命令,让我们通过几个具有真实语法的示例来运行。

使用 Ditto 复制文件/文件夹

在最简单的形式下,ditto 的工作方式很像 cp 命令,基本语法如下:

源目的地同上

例如,如果您想将 ~/Desktop/FluffyBackups 复制到 /Volumes/FluffyBackups/,您只需键入以下内容:

同上 ~/Desktop/FluffyBackups /Volumes/FluffyBackups/

同样,这将保留所复制文件的所有所有权和资源元数据详细信息,如果您将文件从一个用户目录复制到另一个用户目录,或者如果您想保留文件的修改时间等内容,这可能尤为重要。

如果您不确定源内容和目标内容,您可以随时使用 comm 命令diff 命令 在继续执行同上命令之前。

使用 Ditto 合并目录和文件夹内容

请记住,同上将检查目标是否已经存在,如果存在,它将把源目录合并到目标。这很重要而且非常有用,使其成为从命令行合并目录<的最简单方法之一/a> 在 Mac OS X 中(尽管现在在 Finder 中也很容易)。

同上 ~/Pictures/Fall2015/ /Volumes/PhotoBackup/2015/

这将获取“Fall2015”中的所有图片并将它们复制到预先存在的目录“2015”中,有效地将内容从源合并到目标。同样,合并行为在目标已经存在时发生,如果目标不存在,它将按指定或源名称创建。

如果您使用同上从带有符号链接的目录中复制数据,使用 -V(verbose all)标志很有价值,因为它会显示已复制的每个文件和符号链接。注意 -V 与 -v 不同,后者只会将文件显示为输出,而不显示符号链接。

使用 Ditto 复制无元数据

如果出于某种原因您不想复制元数据和资源分支,您可以像这样使用 –norsrc 标志:

同上 -V --norsrc ~/Sample/Folder /Volumes/NoMetadataBackups

使用 –norsrc 标志会破坏同上的主要优点,但在某些情况下它可能很有用。

您可以通过阅读它的手册页了解更多关于优秀的同上命令的信息,在 Mac OS X 中输入:

人同上

同上手册页解释了如何使用它来复制文件和目录进阶方式

像往常一样,使用箭头键在手册页中上下导航。

在严重依赖 ditto 之前,请务必尝试几次无关紧要的文件移动和目录合并,以了解它如何与您的计划使用情况配合使用。