我正在尝试打包位于 的根文件系统的内容$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
相对于当前目录创建的。