Разделение архива на несколько носителей

Я создаю архивы, которые больше моего текущего физического носителя ( DVD). Я хотел бы разделить эти архивы:

  • автоматически - вместо создания мини-архивов вручную;
  • последовательно - так что архив может быть извлечен независимо от другого.

Например, для дерева размером 24 ГБ, которое будет заархивировано в 10 ГБ, я получу 3 архива, каждый из которых < 4,7 ГБ, и каждый из них может быть извлечен без 2 других.

Я использую dirvish, поэтому я архивирую дерево файловой системы.


Обновление: я использую Linux.

8 ответов

Мне было бы очень интересно посмотреть, как вы комбинируете dirv с системой резервного копирования на DVD, учитывая, что основной смысл dirvish заключается в том, чтобы делать резервные копии постепенно, и вы теряете эту выгоду с DVD.

Во всяком случае, варианты этой проблемы, которые я вижу:

  • Разделите ваше дерево на более мелкие деревья, чтобы каждое из них помещалось на диске. Это, вероятно, проще всего, но в конечном итоге они снова станут слишком большими.
  • Сценарий архивирования / сжатия в post_server, я бы использовал для этого rar, он поддерживает разделенные архивы, где в качестве параметра указан максимальный размер сегмента. Возвращение всех данных в случае потери одного диска может быть затруднено. (Использование tar, как предложено ранее, может обойти эту проблему)
  • Разделить ветку без архиватора. Можно было бы использовать find для написания сценария оболочки, который разделил бы ветвь на части размером менее 4,7 ГБ. Это, вероятно, лучший долгосрочный подход, но требует гораздо больше усилий

Лично я бы старался избегать любых решений, связанных с созданием больших архивов объемом 4,7 ГБ. Если бы я думал, что есть шанс, мне придется извлечь их, чтобы получить небольшие файлы обратно

PKZip и WinZIP поддерживают опцию разделения большого архива на несколько файлов меньшего размера, которые могут быть указаны пользователем.

Я не знаком с dirvish, но если вы ищете только для резервного копирования и сжатия файлов, с определенным пользователем ограничением размера файла, возможно, стоит подумать.

Насколько я знаю, вы не можете создать разделенный архив, чтобы одна из его частей могла быть извлечена независимо.

Вы можете указать tar, zip, 7zip, rar, ... разделить архив на несколько файлов, указанных по размеру. (rar -v, 7z -v и т. д.)

Я знаю, что RAR может создавать архивы таким образом, что вы можете извлечь только из одного тома из всего набора томов.

Периодически архивируйте (tar/zip/...) свою стабильную (не во время работы dirvish!) Папку / хранилище dirvish, затем используйте формат архива "PAR" (в настоящее время v2), чтобы разделить архив.

Это своего рода "программный RAIF" (RAID на файлы!)

Смотрите, например, http://parchive.sourceforge.net/

Ты можешь сказать tar разделить архив на заданный размер.

Первоначально он был реализован для разделения архивов по нескольким лентам, но в равной степени применим для других типов носителей.

Вы не сможете изначально сжать архив. Но вы должны быть в состоянии gzip и позже распакуйте архивы по отдельности. Обязательно укажите новые имена для каждого сплит-архива.

tar cvf archive.tgz -ML 4928307 items_to_archive

То, что вы хотите, вряд ли будет существовать, хотя бы потому, что при выполнении восстановления программное обеспечение должно выяснить, на каком носителе находится резервная копия, поэтому у него должен быть какой-то каталог, чтобы искать такие вещи, и такой каталог имеет быть сохраненным в архиве - который потребует, чтобы вы прочитали и диск "каталога", и диск "хранения". Даже если бы вы написали это самостоятельно, вам бы пришлось, по крайней мере, временно (на время сеанса резервного копирования) отследить, какие файлы были скопированы, чтобы они не были скопированы дважды.

GNU tar имеет многотомную поддержку. Полезно, когда объем созданного архива превышает емкость одной ленты. Я надеюсь, что все вы понимаете, что лента также может означать файл, или DVD, или CD, и т. Д.

Из раздела 9.6 руководства по GNU tar:

Используйте --multi-volume (-M) в командной строке, а затем tar, когда достигнет конца ленты, запросит другую ленту и продолжит архив. Каждая лента будет иметь независимый архив и может быть прочитана без необходимости в другой. (Как исключение из этого, файл, который tar архивировал, когда на нем заканчивалась лента, обычно разделяется на два архива; в этом случае вам нужно извлечь из первого архива, используя --multi-volume (-M) и затем вставьте вторую ленту при появлении запроса, чтобы tar мог восстановить обе части файла.)

акцент мой

Но будьте осторожны с исключением! Может быть, записать в файлы, которые вы можете проверить размер перед записью архивных файлов на DVD. Это может быть сделано с помощью сценария. Или уменьшите размер файла до 4.7G, чтобы архив, охватывающий два DVD, никогда не появлялся.

На Linux/ Unix вы можете использовать splitкоманда, которая будет разбивать файл на разные части, которые имеют определенный размер (10 байт, 100 МБ и т. д.)

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