我必须将目录中的文件复制到其备份目录,同时保留文件夹结构。例如文件aaa
到MyFolder/Test/aaa
.MyFolder.bck/Test/aaa
我试着用
cp --parents MyFolder/Test/aaa .MyFolder.bck;
但结果是.MyFolder.bck/MyFolder/Test/aaa
而不是.MyFolder.bck/Test/aaa
(这是我想要的)。
我必须将目录中的文件复制到其备份目录,同时保留文件夹结构。例如文件aaa
到MyFolder/Test/aaa
.MyFolder.bck/Test/aaa
我试着用
cp --parents MyFolder/Test/aaa .MyFolder.bck;
但结果是.MyFolder.bck/MyFolder/Test/aaa
而不是.MyFolder.bck/Test/aaa
(这是我想要的)。
您需要到cd
目录,然后复制文件:
(cd MyFolder && cp --parents Test/aaa ../.MyFolder.bck)
命令周围的方括号使其在子 shell 中运行,而不是在当前 shell 中运行。这样做的好处是它使您不必cd
事后回到原始目录。
我喜欢为此使用“rsync”。
rsync -av MyFolder/ .MyFolder.bck/
确保使用尾部斜杠,因为它们告诉 rsync 这两个参数都是“顶级”目录(也就是说,不要在 .MyFolder.bck 中创建另一个 MyFolder)。
为什么不使用两个命令?
cd MyFolder && cp --parents /Test/aaa .MyFolder.bck;
Linux 也有几个同步实用程序,甚至用于备份目的,例如 rsync、rdiff-backup、synkron……更不用说本地 VCS 的优点……你不应该重新发明轮子。