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

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

我正在尝试结合两个选项来创建 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/网站/html/file1.html
  • /var/www/网站/html/file5.html
  • /var/www/网站/html/file32.html

等等。

我该如何解决这个问题?

答案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)中删除三个组件。

相关内容