Ale*_*lds 27 linux archive tar cpio
我正在使用tar归档一组非常大(多 GB)的bz2文件。
如果我tar -tf file.tar用来列出存档中的文件,这需要很长时间才能完成(~10-15 分钟)。
同样,完成cpio -t < file.cpio所需的时间也一样长,加减几秒钟。
因此,从存档中检索文件(tar -xf file.tar myFileOfInterest.bz2例如通过)也很慢。
是否有一种存档方法可以在存档中保留一个随时可用的“目录”,以便可以快速检索存档中的单个文件?
例如,某种目录存储指向存档中特定字节的指针,以及要检索的文件的大小(以及任何其他文件系统特定的详细信息)。
是否有一个工具(或参数tar或cpio)允许归档中的文件的高效检索?
cas*_*cas 18
tar(以及 cpio 和 afio 和 pax 以及类似的程序)是面向流的格式 - 它们旨在直接流式传输到磁带或通过管道传输到另一个进程。虽然理论上可以在文件/流的末尾添加索引,但我不知道有任何版本可以这样做(尽管这将是一个有用的增强)
它对您现有的 tar 或 cpio 存档没有帮助,但是还有另一个工具 dar(“磁盘存档”),它可以创建包含此类索引的存档文件,并且可以让您快速直接访问存档中的各个文件.
如果 dar 未包含在您的 unix/linux-dist 中,您可以在以下位置找到它:
Mau*_*nRa 11
您可以将 SquashFS 用于此类存档。这是
我所知道的唯一缺点是它是只读的。
http://squashfs.sourceforge.net/ http://www.tldp.org/HOWTO/SquashFS-HOWTO/whatis.html
小智 5
Thorbjørn Ravn Anderser是对的。默认情况下,GNU tar 创建“可搜索”档案。但是如果没有给出 -n 选项,它在读取这些档案时不会使用该信息。使用 -n 选项,我刚刚从 300GB 存档中提取了 7GB 文件,以便读/写 7GB 所需的时间。没有 -n 花费了一个多小时并且没有产生任何结果。
我不确定压缩如何影响这一点。我的档案没有压缩。压缩档案不可“查找”,因为当前 (1.26) GNU tar 将压缩卸载到外部程序。