我有一个 100GB 的 tar 文件,其中包含小文件(每个文件都小于 1MB)。将此文件放在磁盘上后,我还有 20GB 的可用磁盘空间。换句话说,我有足够的磁盘空间来容纳 tarball 中的文件,但不足以容纳文件 + tarball。
我如何才能提取 tarball 中的文件并逐步释放 tarball 占用的磁盘空间?
我可以从 Linux(Ubuntu)和 Windows 访问该磁盘。
答案1
的文档tar 选项--delete
有一段有趣的文字:
此操作将重写存档。如果存档设备允许您写入介质上的任何位置(例如磁盘),则您只能在存档上使用 `--delete';因此,它不适用于磁带。
由于这需要媒体支持随机读取/写入,因此运气好的话,这可能意味着--delete
无需解压即可就地完成,以便创建存档的新实例。在这种情况下,您可以解压 20 GB 的文件,然后删除它们以缩小存档。重复此操作五次(或六次)。
我建议从档案末尾解压文件,然后按照与档案相反的顺序删除它们。如果 tar 足够智能,它只会在每次删除档案中的最后一个文件时缩小档案,这样就不需要在每次删除时一遍又一遍地复制所有后续文件。
如果这不起作用,您唯一的选择就是找到另一个磁盘来包含解压后的文件。
答案2
我知道这不是一个确切的答案,但由于缺乏好的选择,我最终在另一台主机上解压,然后使用
scp -r /path/to/folder user@host:/path/to/remote
这不是最好的解决方案,但对我来说,这是一个可以接受的解决方法。我想说,对于一半以上想要使用 tar 并同时删除文件的情况,这是一个很好的解决方法。