Tar - 创建存档时删除通用前缀

Tar - 创建存档时删除通用前缀

我正在尝试打包位于 的根文件系统的内容$rootfs。问题是,当我尝试 时tar -c $rootfs > $dest,当前目录和实际文件系统之间的目录仍然存在。因此,对于每个文件,etc/fstab我使用而fun/rootfs/path/etc/fstab不是。rootfs=fun/rootfs/path

我知道--strip,但问题是 是$rootfs一个相对路径变量,所以我不知道文件系统和当前目录之间有多少个目录。cd出于类似的原因,我也不知道;$dest是一个相对路径变量,我必须留在当前目录中才能在正确的位置创建存档。

有没有办法可以rootfs在创建档案时忽略路径?

答案1

您可以生成相对于路径的文件列表$rootfs,然后使用它-C $rootfs -T <file-of-filenames>来创建存档。您不能使用通配符在 tar 命令行上生成文件列表,因为这样无法正确完成。不过,您可以使用 find 或 ls 之类的命令来执行此操作。

答案2

我不确定我理解了这个问题,但是

(cd "$rootfs"; tar -c .) > "$dest"

因此tar在目录中运行$rootfs,但是$dest相对于当前目录创建的。

相关内容