如何在OS X上使用ditto像在Linux上的cp -a一样工作

时间:2020-03-06 15:00:10  来源:igfitidea点击:

我是Linux专家,我习惯于使用cp -a复制目录树。 OS X在cp上没有-a选项,但是有ditto命令。我正在阅读"同上"中的那个人,但是我应该特别注意些什么吗?

解决方案

正如j04t指出的那样,应该是cp -pR

在OS X上,我们可以

cp -dRL src target

cp在新版本的OS X中保留资源(发生这种情况时它是10.3吗?)

嘿d有点像颠倒的p,对;)

从Linux cp(1):

-a, --archive same as -dpR

这很令人困惑,因为-d似乎等同于-p。无论如何,OSX具有-p和-R,因此我们可以使用它。

我个人使用rsync -a(或者任何需要的rsync参数)。我的两个原因是:我已经知道如何做到这一点,并且我需要我的脚本可以在Linux / BSD / Solaris上移植。在某些文件系统中," rsync"比" cp"更有效。

抱歉,这不是直接的答案,我在BSD上使用了ditto,但没有任何手册页上的陷阱。

根据cp手册页cp -a与cp -dpR相同,

-p = preserve mode,ownership,timestamps
-R = recursive
-d = no dereference and preserve links

OS X等效为

cp -pPR

-p = preserve
-R = recursive
-P = no symbolic links are followed -- can be added but this is the default behavior

唯一缺少的是-d,我认为这是默认行为,但我不是很肯定。

我从来没有弄过同上

编辑-@ SoloBold

-L遵循符号链接。 -p不遵循符号链接。
OS X(至少10.4)没有-d选项。

那是一个巨大的差异。

同上和cp之间的区别是,当source是目录时,cp在目标上创建一个具有该名称的目录,但同上仅复制内容。谨防!