2

我的目录结构为:/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

所以请给我一个解决方案。

4

2 回答 2

2

我说,保持简单...

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

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

于 2012-11-16T15:27:54.467 回答
0

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

cp -dR !(amr_backup) amr_backup/

文件大小在我看来还可以。amr大约是 的两倍,amr_backup因为它包含amr_backup.

于 2012-11-16T15:25:48.793 回答