У меня есть несколько огромных папок с небольшими файлами, которые я хочу заархивировать для длительного хранения (около 200 ГБ).

Вместо того, чтобы просто использовать что-то вроде gzip/tar/dar/7zip, я подумываю использовать sqlite

sqlite3 Backup.db ".ar -cv Data"

Независимо от сжатия, я иду к некоторым подводным камням? Есть ли какие-то преимущества у старой простой смолы?

1 ответ1

2

Основной недостаток: вам нужен исполняемый файл sqlite3 с поддержкой архивов, когда вам нужно восстановить ваши данные. В зависимости от обстоятельств, у вас может не быть под рукой, но вы с большей вероятностью найдете работающий gzip , tar et al.

Вот почему я особенно педантичен по этому поводу:

  • Системы MacOS версии sqlite3 как правило, находятся в пределах досягаемости от последних версий, но Apple лишь время от времени обновляет свое программное обеспечение, и многие пользователи Mac могут запускать устаревшие ОС по разным причинам. Следовательно, система MacOS sqlite3 до Mojave не поддерживает архивирование, поэтому для переносимости вам определенно нужно будет установить и обновить пакет Homebrew sqlite3.
  • Homebrew в Linux по умолчанию устанавливает бутилированный (то есть предварительно скомпилированный двоичный файл) sqlite v3.26, который каким-то образом не поддерживает архивирование. Мне пришлось brew install --build-from-source sqlite3 чтобы это исправить.

Это всего лишь два примера, с которыми у меня есть личный опыт. Платформы, на которых вы планируете работать, могут иметь аналогичные ошибки. Сравните это с "это работает везде" gzip/tar/etc.

Так что, если вы хотите использовать формат sqlar всерьез, внимательно рассмотрите все обстоятельства и условия, в которых вы будете это делать. Например, на аварийном диске может отсутствовать архивация sqlite3 , и вы действительно не хотите создавать sqlite с нуля во время аварийного восстановления.


Помимо доступности sqlite3 , вам также необходимо рассмотреть вопрос о размерах файлов.

Поскольку sqlar - это в основном БД SQLite, он наследует все ограничения этого формата файлов. В частности, данные каждого файла хранятся в виде большого двоичного объекта, максимальный размер которого по умолчанию составляет 1 миллиард байтов. Кроме того, обработка запросов SQLite приводит к тому, что каждая строка обрабатывается как один большой двоичный объект, что еще больше снижает ограничение на размер файла.

Сравните это с ZIP (2 32 для "классического ZIP", 2 64 для ZIP64) или GNU tar (без ограничений), и у вас может быть еще одна причина выбрать традиционный маршрут.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .