问题与`cp -dR`

我有一个目录结构: /apps/amr 。 我想对amr进行备份(即没有取消引用链接)。现在/ apps目录有一个不同的用户和组所属的(我没有访问权限)。 我以不同的用户和组login。 所以显然在/apps目录执行:

  mkdir amr_backup cp -dR amr amr_backup 

不作为权限被拒绝。 所以,我正在尝试在/apps/amr目录中做同样的事情,因为amr目录与我login的用户和组相同。 但是执行时:

  mkdir amr_backup cp -dR * amr_backup 

它显示这个错误:

  cp: cannot copy a directory, `amr_backup`, into itself, `amr_backup/amr_backup' 

这是显而易见的,因为amr_backup目录本身在/apps/amr 。 而且我也看到不是所有的东西都能正确地备份:

  du -sh /apps/amr 8.6G /apps/amr du -sh /apps/amr/amr_backup 4.3G /apps/amr/amr_backup 

所以请给我一个解决scheme。

我说,保持简单…

 mkdir .tmp cp -dR * .tmp/. mv .tmp amr_backup 

*的glob扩展将不包括任何以. 所以隐藏的目录本身不会是源目录。

您可以使用!(amr_backup)而不是*通配符从复制命令中排除amr_backup

 cp -dR !(amr_backup) amr_backup/ 

文件大小看起来对我好。 amr大约是amr_backup两倍,因为它包含amr_backup