问题`cp -dR`

时间:2012-11-16 15:12:34

标签: linux shell unix

我有一个目录结构:/apps/amr。我想原样备份amr(即没有取消引用链接)。现在/ apps目录有一个与它不同的用户和组(我无法访问它) 。我以其他用户和组身份登录。显然在/apps目录中执行:

    mkdir amr_backup
    cp -dR amr amr_backup

不起作用,但拒绝权限。 因此,我试图在/apps/amr目录中执行相同操作,因为amr目录具有我登录的相同用户和组。但在执行时:

    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

请好好给我一个解决方案。

2 个答案:

答案 0 :(得分:2)

我说,保持简单......

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

*的glob扩展不会包含任何以.开头的内容,因此隐藏目录本身不会是源目录。

答案 1 :(得分:0)

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

cp -dR !(amr_backup) amr_backup/

文件大小对我来说没问题。 amr的大小约为amr_backup的两倍,因为它包含amr_backup