我有一个大的backup.tar.gz文件(260 GB)和大约160 GB的免费存储空间。备份文件包含三个大的哑文件(旧备份,大约190 GB),这是不需要的。因此,我希望将backup.tar.gz解压到管道中,排除一些文件,然后在不使用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
发布于 2015-07-30 06:26:56
这个问题属于https://superuser.com/或https://unix.stackexchange.com/。
tar x -O只是连接所有文件的内容。这会丢失文件名和其他元数据,包括文件之间的边界。
使用GNU tar --delete在没有原始成员的情况下重写tar。因为您有要排除的所有文件的名称,所以这应该很简单。也许zcat | tar --delete是为了避免让tar重新压缩输出。
如果这个答案不能引导你朝着正确的方向前进,我明天可以补充更多的细节。
我记得我看过一个档案馆的瑞士军刀命令行程序,它可能有做这种事情的选择,但是快速搜索没有找到它。
https://stackoverflow.com/questions/31716185
复制相似问题