使用同上从Mac 终端智能复制文件& 目录
目录:
大多数长期使用命令行的用户都依赖 cp 命令来复制文件和目录,但 Mac OS X 提供了另一种解决方案,即“同上”命令。 Ditto 稍微高级一些,但出于多种原因可能对“cp”有利,因为它不仅保留所有权属性和权限,还保留文件资源分支以及文件和文件夹元数据,从根本上确保文件和/或文件夹被准确复制。
此外,ditto 可用于将文件或文件夹复制到源目录,但如果该源尚不存在,ditto 将自动创建它。此外,如果目标文件夹确实存在,则复制的内容将合并到该目标目录中。最后,ditto 也跟随符号链接,如果你是 ln 命令的重度用户,它特别方便。
为了更好地理解ditto 命令,让我们通过几个具有真实语法的示例。
使用同上复制文件/文件夹
ditto最简单的形式和cp命令很像,基本语法如下:
同上源目的地
例如,如果您想将~/Desktop/FluffyBackups 复制到/Volumes/FluffyBackups/,您只需键入以下内容:
同上~/Desktop/FluffyBackups /Volumes/FluffyBackups/
再次,这将保留所复制文件的所有所有权和资源元数据详细信息,如果您要将文件从一个用户目录复制到另一个用户目录,或者如果您想保留类似的内容,这可能特别重要文件修改次数
如果您不确定源和目标内容,您可以随时使用comm命令或diff命令比较两者,然后再继续执行ditto命令。
使用同上合并目录和文件夹内容
记住,同上将检查目标是否已经存在,如果存在,它将把源目录合并到目标。这很重要而且非常有用,使其成为在 Mac OS X 中从命令行合并目录的最简单方法之一(尽管现在在 Finder 中也很容易)。
同上 ~/Pictures/Fall2015/ /Volumes/PhotoBackup/2015/
这会将“Fall2015”中的所有图片复制到预先存在的目录“2015”中,有效地将内容从源合并到目标。同样,合并行为在目标已经存在时发生,如果目标不存在,它将按指定或源名称创建。
如果您使用同上从具有符号链接的目录复制数据,使用-V(详细所有)标志是有价值的,因为它会显示已复制的每个文件和符号链接。注意 -V 与 -v 不同,它只会将文件显示为输出,而不是符号链接。
Copy without Metadata Using Ditto
如果出于某种原因你不想复制元数据和资源分支,你可以像这样使用-norsrc标志:
ditto -V --norsrc ~/Sample/Folder /Volumes/NoMetadataBackups
使用-norsrc 标志会破坏同上的主要好处,但它在某些情况下可能很有用。
您可以通过阅读它的手册页了解更多关于出色的同上命令的信息,在 Mac OS X 中键入:
man同上
和往常一样,使用箭头键在手册页中上下导航。
在你严重依赖同上之前,一定要尝试几次无关紧要的文件移动和目录合并,以了解它如何与你的计划使用一起工作。