Архивирование большого количества файлов / одного большого файла

Я хочу сжать около 100'000 файлов (вот что find . -type f | wc -l говорит) с общим использованием диска 100 ГБ. Большинство файлов небольшие, но лишь немногие из них составляют около 70 ГБ из 100 ГБ.

Я не хочу использовать tar или tar.gz для этого, потому что, если я хочу получить доступ к архиву, File Roller сначала должен прочитать весь архив с внешнего жесткого диска, прежде чем я смогу увидеть список файлов. То же самое, если я пытаюсь перечислить файлы на терминале.

Мне не нужно управление правами tar, потому что я помню несколько файлов, которым нужны другие права, чем другие. Какой алгоритм сжатия я должен использовать?

И пока я на этом: я делаю полное резервное копирование диска с помощью этой команды:

dd if=/dev/sda bs=32M | gzip -9 > /location/dateAndMachineName.gz

Это делает довольно хорошее сжатие. Но знаете ли вы лучший алгоритм сжатия?

2 ответа

Единственное известное мне решение - это pixz ( sudo apt-get install pixz ), вариант xz с использованием заблокированного кодера, который обеспечивает быстрый случайный доступ / индексацию. Кроме того, это параллельный метод с использованием нескольких ядер для сжатия.

Ссылаясь на документы:

Существующие утилиты XZ ( http://tukaani.org/xz/) обеспечивают отличное сжатие в формате файлов.xz, но у них есть две существенные проблемы:

  • Они являются однопоточными, в то время как большинство пользователей в настоящее время имеют многоядерные компьютеры.
  • Производимые ими файлы.xz представляют собой всего лишь один большой блок сжатых данных, а не набор небольших блоков. Это делает невозможным произвольный доступ к исходным данным.

С pixz обе эти проблемы решены.

Использование простое:

tar -Ipixz -cf foo.tpxz foo сжать папку foo

pixz -l foo.tpxz перечислить файлы в нем (быстро!)

pixz -x <file_path> < foo.tpxz | tar x извлечь один файл, данный <file_path> в архиве

В качестве бонуса вы также сохраните права доступа, так как файлы сначала сохраняются!

Я могу подумать только об одном решении для вас: создать новый раздел с файловой системой btrfs и активировать прозрачное сжатие. Имейте в виду, что некоторые люди все еще рассматривают btrfs как "экспериментальную" файловую систему. Тем не менее, мой вторичный резервный жесткий диск использует btrfs (немногим более 2 лет), и до сих пор он дал мне 0 проблем. Но как обычно YMMV.

Это и это должно помочь вам начать работу с btrfs, если вы с ним еще не знакомы.

Другие вопросы по тегам