Linux 将tar.gz重新打包为tar并排除一些文件
我有一个很大的backup.tar.gz文件(260 GB)和大约160 GB的可用存储空间。 备份文件包含三个大的哑文件(旧备份,约190 GB),这是不需要的。 因此,我想将backup.tar.gz解压到管道中,排除一些文件,并在没有gzip的情况下将其恢复为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-,但
tar-xz--exclude from='exclude.lst'-f backup.tar.gz-O-| tar cfv backup.tar-T-
,但它似乎不起作用
在第一次回答之后,我在这里找到了一个解决方案这个问题属于或
tarx-O
只是连接所有文件的内容。这会丢失文件名和其他元数据,甚至包括文件之间的边界
使用GNUtar--delete
重写tar,而不使用一些原始成员。因为您有所有要排除的文件的名称,所以这应该很简单。也许zcat | tar——删除
以避免tar
重新压缩输出
如果这个答案不能指引你正确的方向,我可以在明天补充更多细节
我想我记得看到过一个存档瑞士军刀命令行程序,它可能有做这类事情的选项,但是快速搜索没有找到它。它是
-O
,而不是-O-
。这是致命的缺陷:-O
将所有文件的内容放在一起,没有元数据。