我有几个巨大的文件夹,里面有一些小文件,我想将它们存档以供长期存储(大约 200GB)。
我正在考虑使用 sqlite,而不是仅仅使用 gzip/tar/dar/7zip 之类的东西
sqlite3备份.db“.ar-cv数据”
忽略压缩,我是否会遇到一些陷阱?旧的简单 tar 有什么优势吗?
答案1
主要缺点:你需要一个sqlite3
可执行文件具有存档支持当你需要恢复数据时。根据具体情况,你可能手边没有,但你更有可能找到一个可用的gzip
,tar
等人。
这就是为什么我对此特别挑剔:
- macOS 系统
sqlite3
版本通常都与最新版相差无几,但 Apple 只会偶尔更新其软件,而许多 Mac 用户可能会因为各种原因运行过时的操作系统。因此,sqlite3
Mojave 之前的macOS 系统不是支持存档,因此为了便于携带,你一定要确保自制sqlite3 包已安装并更新。 - Linux 上的 Homebrew 默认安装一个 Bottled(即预编译的二进制)sqlite v3.26,它以某种方式设法不是支持存档。我必须
brew install --build-from-source sqlite3
修复它。
这只是我亲身经历过的两个例子。您计划使用 SQLAR 的平台可能存在类似的问题。将所有这些与“它在任何地方都有效” gzip
//tar
等进行对比。
因此,如果您想认真使用 sqlar 格式,请仔细考虑所有情况并环境您将在其中执行此操作。例如,救援磁盘可能没有存档sqlite3
,并且您确实不想在灾难恢复期间从头开始构建 sqlite。
除了具有存档功能的 之外sqlite3
,您还需要考虑文件大小。
由于 SQLar 本质上是一个 SQLite DB,因此它继承了所有限制这种文件格式。具体来说,每个文件的数据都存储为 BLOB,其默认最大大小为10亿字节。此外,SQLite 查询处理导致每行被处理为单个 BLOB,从而进一步降低文件大小限制。
比较一下压缩(2 32为“经典 ZIP”,2 64为 ZIP64)或GNU tar(无限制),并且您可能还有另一个理由选择传统路线。