У меня есть большая (~ 100 ГБ несжатая) коллекция файлов, которые я хочу сохранить в блоках <2 ГБ для резервного копирования в системе хранения на базе Windows Server. Я использую Ubuntu на своей рабочей станции.
Наборы данных собираются в подкаталогах с многоуровневой структурой. (например, каталог A содержит три подкаталога 1, 2, 3, каждый из которых может содержать 30 или более подкаталогов, каждый из которых содержит 6 или 7 файлов с одинаковыми именами (в каждом подкаталоге))
tar
сжимает и архивирует мои данные, но если я хочу получить доступ к отдельным разделам, это довольно болезненно. Это также медленно, и если я использую сжатие, мне нужно распаковать, прежде чем я могу извлечь отдельные каталоги (afaik)
Это будет использовать что-то вроде:
tar -cf mySuperStructure.tar;
split -b 1024M mySuperStructure.tar mySuperStructure.tar.part- ;
gzip mySuperStructure.tar.part-* ;
или аналогичный - я знаю, что tar имеет опцию -z
, но я думаю, что это может быть проблематично при использовании split
? Точно так же, я считаю, что есть возможность разделить архивы tar
, возможно, с помощью сжатия, но файлы разделяются бесполезными способами (возможно, это лучшее решение, если так - пожалуйста, посоветуйте)
Кроме того, dar
сжимает файл по уровню файла, позволяя параметру -m
указать минимальный размер. Это было бы идеально, но для большого количества файлов требуется много времени, чтобы сжать и заархивировать настройки. Каталоги самого низкого уровня имеют размер ~ 70 МБ, поэтому их сжатие будет полезно (и я подозреваю, что быстрее, так как меньше операций сжатия?)
Можно ли указать сжатие подкаталогов по отдельности, без сжатия отдельных файлов? Это было бы быстрее, если бы я мог?
Ручная реализация может выглядеть так:
for levelA in $(ls); do
cd levelA;
for subdirectoryCase in $(ls); do
cd subdirectoryCase;
for subdirSmall in $(ls); do
gzip subdirSmall;
done
cd ..;
tar -cf $subdirectoryCase.tar $subdirectoryCase;
gzip $subdirectoryCase.tar;
done
cd ..;
tar -cf $levelA.tar $levelA;
gzip $levelA.tar;
done
tar -cf superStructure.tar levelA1.tar levelA2.tar levelA3.tar;
gzip superStructure.tar;
но кажется, что это может быть микроуправление до ужасного уровня (но это все еще может быть лучше, я не знаю?) dar
может быть заменен tar
во всем, и split
может использоваться, возможно, до последнего gzip
, предполагая, что более ранние файлы gzip были достаточно малы (чего не будет, но, по-видимому, возможно иметь дело с подобным образом)