将 tar.gz 重新打包为 tar 并排除一些文件
Repack tar.gz to tar and exclude some files
我有一个很大的 backup.tar.gz 文件 (260 GB) 和大约 160 GB 的可用存储空间 space。
备份文件包含三个不需要的大哑文件(旧备份,约 190 GB)。
所以我想 untar backup.tar.gz 通过管道排除一些文件,然后 tar 不使用 gzip 将其返回。
我有一个文本文件,其中包含哑文件的名称。
所以我需要类似的东西:
tar -xz --exclude-from='exclude.lst' -f backup.tar.gz -O - | tar cfv backup.tar -T -
,不过好像不行。
第一次回答后,我在这里找到了解决方案https://unix.stackexchange.com/questions/80239/efficiently-remove-files-from-large-tgz
此问题属于 https://superuser.com/ or https://unix.stackexchange.com/。
tar x -O
只是连接所有文件的内容。这会丢失文件名和其他元数据,甚至包括文件之间的边界。
使用 GNU tar --delete
重写 tar 没有一些原始成员。由于您拥有要排除的所有文件的名称,因此这应该很简单。也许 zcat | tar --delete
可以避免 tar
重新压缩输出。
如果这个答案不能引导您朝着正确的方向前进,我明天可以添加更多细节。
我想我记得看过一个存档瑞士军刀命令行程序,它可能有执行此类操作的选项,但快速搜索没有找到它。
我有一个很大的 backup.tar.gz 文件 (260 GB) 和大约 160 GB 的可用存储空间 space。
备份文件包含三个不需要的大哑文件(旧备份,约 190 GB)。
所以我想 untar backup.tar.gz 通过管道排除一些文件,然后 tar 不使用 gzip 将其返回。
我有一个文本文件,其中包含哑文件的名称。
所以我需要类似的东西:
tar -xz --exclude-from='exclude.lst' -f backup.tar.gz -O - | tar cfv backup.tar -T -
,不过好像不行。
第一次回答后,我在这里找到了解决方案https://unix.stackexchange.com/questions/80239/efficiently-remove-files-from-large-tgz
此问题属于 https://superuser.com/ or https://unix.stackexchange.com/。
tar x -O
只是连接所有文件的内容。这会丢失文件名和其他元数据,甚至包括文件之间的边界。
使用 GNU tar --delete
重写 tar 没有一些原始成员。由于您拥有要排除的所有文件的名称,因此这应该很简单。也许 zcat | tar --delete
可以避免 tar
重新压缩输出。
如果这个答案不能引导您朝着正确的方向前进,我明天可以添加更多细节。
我想我记得看过一个存档瑞士军刀命令行程序,它可能有执行此类操作的选项,但快速搜索没有找到它。