Linux中的命令行递归/深层目录复制?

Gre*_*tes 14 linux filesystems shell

在大多数情况下,在 Linux 中进行递归/深层目录复制的一种好的通用方法是什么?我使用了简单的东西,比如cp -R相当复杂的cpio咒语。是否有任何显着的优势或劣势导致您偏爱其中一个?你最常使用哪一种?

Gar*_*eth 30

NAME
cp - copy files and directories

-a, --archive
   same as -dpR

-d     same as --no-dereference --preserve=links
-p     same as --preserve=mode,ownership,timestamps
-R, -r, --recursive
    copy directories recursively
Run Code Online (Sandbox Code Playgroud)

所以回答你的问题:

cp -a /foo /bar
Run Code Online (Sandbox Code Playgroud)

将所有内容从目录 /foo 递归复制到目录 /bar,同时保留符号链接和文件/目录“模式”“所有权”和“时间戳”。


Zor*_*che 6

我最常使用像“cd $srcdir ; tar -c . | tar -C $destdir -x ”这样的命令。但我也使用 rsync -a $src $dst。

tar 解决方案的最大优势在于,它是我多年前必须在没有 cpio、rsync 或递归复制的 cp 的系统上使用的解决方案。焦油几乎无处不在。它卡在我的头上,因为我经常使用它,可能有更优雅的方法。它似乎总是能正确完成工作,所以我从来没有真正寻找过替代品。


小智 6

看看 rsync ......我喜欢它,因为在保持两个目录最新时你复制的数据更少......它也可以远程工作。最简单的形式 rsync -a /src /dest