Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将tar.gz重新打包为tar并排除一些文件_Linux_Bash_Tar - Fatal编程技术网

Linux 将tar.gz重新打包为tar并排除一些文件

Linux 将tar.gz重新打包为tar并排除一些文件,linux,bash,tar,Linux,Bash,Tar,我有一个很大的backup.tar.gz文件(260 GB)和大约160 GB的可用存储空间。 备份文件包含三个大的哑文件(旧备份,约190 GB),这是不需要的。 因此,我想将backup.tar.gz解压到管道中,排除一些文件,并在没有gzip的情况下将其恢复为tar。 我有一个文本文件,其中包含哑文件的名称。 所以我需要像这样的东西: tar-xz--exclude from='exclude.lst'-f backup.tar.gz-O-| tar cfv backup.tar-T-,但

我有一个很大的backup.tar.gz文件(260 GB)和大约160 GB的可用存储空间。 备份文件包含三个大的哑文件(旧备份,约190 GB),这是不需要的。 因此,我想将backup.tar.gz解压到管道中,排除一些文件,并在没有gzip的情况下将其恢复为tar。 我有一个文本文件,其中包含哑文件的名称。 所以我需要像这样的东西:
tar-xz--exclude from='exclude.lst'-f backup.tar.gz-O-| tar cfv backup.tar-T-
,但它似乎不起作用

在第一次回答之后,我在这里找到了一个解决方案

这个问题属于或

tarx-O
只是连接所有文件的内容。这会丢失文件名和其他元数据,甚至包括文件之间的边界

使用GNU
tar--delete
重写tar,而不使用一些原始成员。因为您有所有要排除的文件的名称,所以这应该很简单。也许
zcat | tar——删除
以避免
tar
重新压缩输出

如果这个答案不能指引你正确的方向,我可以在明天补充更多细节


我想我记得看到过一个存档瑞士军刀命令行程序,它可能有做这类事情的选项,但是快速搜索没有找到它。

它是
-O
,而不是
-O-
。这是致命的缺陷:
-O
将所有文件的内容放在一起,没有元数据。