已编入索引且可查找的 tar 文件

已编入索引且可查找的 tar 文件

在备份大量文件时,我会对它们进行打包,这样就只需要移动一个文件。但是列出 tar 文件的内容并从中提取特定文件的速度真的很慢。

有没有更好的选择?有没有办法告诉 tar 建立索引并可查找,或者完全采用另一种存档格式?

答案1

是的,有一个项目(现在有点老了)叫做塔林德克萨斯可以做到这一点。您需要在tar文件上创建一个索引文件,但创建后,您就可以进行随机搜索了。

以下是一个示例用法:

tarindexer -i tarfile.tar tarfile.tar.idx
tarindexer -l tarfile.tar tarfile.tar.idx mydir/myfile > myfile

tar 索引文件本身是一个简单的文本文件,其中包含存档中文件的字节偏移量和长度。例如:

$ cat tarfile.tar.idx
mydir 512 0
mydir/myfile1.txt 1024 51
mydir/myfile0.txt 2048 7
mydir/myfile 3072 15

答案2

我也遇到过同样的问题。大型 tarball 对于存储只需要部分访问的大型备份(例如提取特定文件或目录)来说非常不方便。

我发现的一个好的解决方案是壁球壁球是 Linux 的压缩只读文件系统,也可用于创建可浏览和可移植的备份。要访问和浏览部分内容,只需挂载 SquashFS 映像并像浏览普通文件系统一样浏览它。

Squashfs is intended for general read-only filesystem use, for archival
use (i.e. in cases where a .tar.gz file may be used), and in constrained
block device/memory systems (e.g. embedded systems) where low overhead is
needed.

From here: https://github.com/plougher/squashfs-tools/blob/master/USAGE

还有什么好处壁球是它是一种支持多线程的现代解决方案。与 targz 单线程相比,它在创建图像时表现出相当令人印象深刻的性能。

答案3

选项-n, --seek假定档案是可查找的,--no-seek假定档案不可查找,但它仅在读取(列出或提取)时有效。Tar 会尝试自动确定这一点。

因此,尝试在列出/提取时使用-n,例如tar -ntf archive.tar.bz2

相关内容