tar -C 目录中的某些文件

tar -C 目录中的某些文件

假设我有两个目录,我希望tar不保留目录结构:

/root/dir1
/root/dir2
  • 另外,我想仅备份 /root/dir1 中以 f1 开头的文件和 /root/dir1 中名为 log.txt 的文件
  • 在 /root/dir2 中我只想要以 f2 开头的文件

我怎样才能做到这一点?

答案1

如果您有 GNU tar,则可以使用--transform--strip-components选项来获取没有目录树的平面存档。就像是:

tar cf foo.tar --transform='s:.*/::' /root/dir1/f1* /root/dir2/f2* /root/dir1/log.txt

/GNU tar 会对文件名中的前导发出警告,但我们无论如何都会删除它们。

或者,使用几个cds:

cd /root/dir1;
tar cf /some/where/foo.tar f1* log.txt
cd /root/dir2;
tar uf /some/where/foo.tar f2*

在这里,我们需要指定一个不受cds 影响的 tar 存档路径(因此是绝对路径,或者因为两者都是 中的目录/root,所以是父文件夹的路径)。

相关内容