从文件列表创建tar存档并删除完整路径


1

我正在尝试组合两个选项来创建tar存档,但它们并不能很好地协同工作。我不知道是什么问题。

我用:

tar -C /var/www/website html -cvzf html.tgz -T /tmp/htmllist.txt

如果我只使用-C选项,它会创建一个只有相对路径“./html/”的tar存档,但是该文件夹中的所有文件。我不想要这个。

然后,如果我只使用-T选项,它会创建一个只包含所需文件的tar存档,但路径是绝对的“/var/www/website/html/whatever.html”。我也不想要这个。

我想要两者的组合,但不知何故它不起作用。

文件夹结构是:

/var/www/website/html/
  • 很多.html文件

/tmp/htmllist.txt文件夹包含以下行:

  • /var/www/website/html/file1.html
  • /var/www/website/html/file5.html
  • /var/www/website/html/file32.html

等等。

我该如何解决这个问题?


1
如果你 cd /var/www/website 并使用相对文件路径 /tmp/htmllist.txt 然后 tar 将使用存档中的相对路径。你也可以使用 find 并将输出传递给 tar ... -T -
AFH

Answers:


1

Tar在使用时反之亦然 -T。它归档文件,包括完整路径。如果您不想要路径,请在提取时删除它,例如,

创建tarball

tar -C /var/www/website html -cvzf html.tgz -T /tmp/htmllist.txt

提取tarball

tar -xvf html.tgz --strip-path=3

这将从输出路径中删除三个组件,即/ var / www / website。


感谢您的回答!好吧,这个tarball是为网络用户生成的,所以我不希望他们使用条带路径或任何复杂的东西。另外,我不希望他们阅读完整的路径。还有其他解决方案吗?
DMCGIVEN

或者我可以再次压缩,提取和重新压缩?这虽然效率不高......
DMCGIVEN

非显而易见的解决方案是更改到源目录并执行类似tar -cvzf foo.tgz * .html的操作
bjanssen

它不是* .html它是某些.html文件的特定选择
DMCGIVEN
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.