解压 *.tar 文件,同时逐步删除存档

lar*_*ars 6 linux tar

我有一个 100GB 的小文件 tar 文件(每个小于 1MB)。磁盘上有此文件后,我还剩下 20GB 的可用磁盘空间。换句话说,我有足够的磁盘空间来包含 tarball 中的文件,但不足以包含文件 + tarball。

如何提取 tarball 中的文件,同时逐步释放 tarball 占用的磁盘空间?

我可以从 Linux (Ubuntu) 和 Windows 访问该磁盘。

har*_*ymc 6

tar 选项--delete的文档有这样有趣的文本:

此操作将重写存档。如果存档设备允许您写入介质(例如磁盘)上的任何点,则只能在存档上使用“--delete”;因此,它不适用于磁带。

由于这需要介质支持随机读/写,如果幸运的话,这可能意味着--delete就地完成,无需解包来创建存档的新实例。在这种情况下,您可以解压 20 GB 的文件,然后删除它们以缩小存档。重复该操作五(或六)次。

我建议从存档末尾解压文件,并以与存档相反的顺序删除它们。如果 tar 足够智能,它只会在每次删除存档中的最后一个文件时收缩存档,这样就不需要在每次删除时一次又一次地复制所有以下文件。

如果这不起作用,您唯一的选择是找到另一个磁盘来包含解压的文件。