'cp' 跳过一些 Eclipse 的点目录

'cp' 跳过一些 Eclipse 的点目录

我正在尝试备份我的 Eclipse.metadata目录。我运行的命令是:

cp -Rf ~/some/where/.metadata/* ~/some/backup/.metadata/.

我第一次尝试这个时,复制跳过了锁定文件和.plugins目录.mylyn。经过一番研究,我发现一些线程提到了权限更改。我应用了更改并取得了一些成功。

现在,运行脚本不会创建或遍历.plugins.mylyn目录。其他研究没有得出任何结果。

我在用:

Windows XP SP3

Cygwin 1.7.1-1

答案1

*中的通配符~/some/where/.metadata/*不匹配以点开头的文件或目录。这是大多数 shell 的行为,而不仅仅是 Cygwin。一些替代方案:

  • 使用另一个参数明确包含点文件
    cp -Rf ~/some/where/.metadata/* ~/some/where/.metadata/.* ~/some/backup/.metadata/.

.*匹配以两个或更多点开头的文件和目录)

  • 使用不使用通配符的表达式:
    cp -Rf ~/some/where/.metadata/ ~/some/backup/
  • 使用tar cf - | tar xf -习语
    tar cf - ~/some/where/.metadata | (cd ~/some/backup/.metadata ; tar xf -)

答案2

我更喜欢使用rsynccpio复制目录:

rsync -acv --delete . DST

find . | cpio -pudvm DST

我想我是少数使用 的人之一cpio;这是在 SysV 机器上工作时养成的老习惯。它的缺点是您必须从当前目录复制:如果您将绝对路径传递给find,则该路径将在目标目录中复制。另一方面,rsync根据 SRC 目录是否带有尾部斜杠,它有自己的怪异之处。

相关内容