11.10. Разбиение больших файлов на несколько дисков

Проблема

Вы работаете с очень большим файлом — скажем, архивом .tar или огромным графическим изображением. Файл требуется сохранить на компакт-диске, но его объём превышает объём одного диска.

Решение

Разбейте файл утилитой split, а затем преобразуйте новые файлы в образы .iso и запишите их на диски. Сборка исходного файла осуществляется командой cat.

Допустим, имеется 2-гигабайтный архив tar с именем big-backup. В следующем примере он разбивается на 650-мегабайтные фрагменты. Емкость компакт-диска составляет 700 Мбайт, но нужно оставить место для служебных данных:

$ split -b 650m big-backup.tar.gz
creating file 'xaa'
creating file 'xab'
creating file 'xac'

Каждый файл теперь занимает около 682 Мбайт. Преобразуйте каждый файл в образ .iso:

$ for i in xa*; do echo "$i"; mkisofs -o $i.iso $i; done

После завершения обработки команда ls выведет следующий результат:

$ ls
xaa xaa.iso xab xab.iso xac xac.iso

Теперь запишите каждый файл .iso на отдельный компакт-диск:

$ cdrecord -v -eject dev=0,0,0 xaa.iso
$ cdrecord -v -eject dev=0,1,0 xab.iso
$ cdrecord -v -eject dev=0,1,0 xac.iso

Чтобы восстановить разбитый архив, скопируйте файлы .iso с компакт-дисков на жёсткий диск и воспользуйтесь командой cat:

$ cat xaa xab xac > big-backup.tar.gz

Или последовательно присоединяйте содержимое каждого компакт-диска к архиву на жёстком диске без предварительного копирования:

$ cat /cdrom/xaa > big-backup.tar.gz
$ cat /cdrom/xab >> big-backup.tar.gz
$ cat /cdrom/xac >> big-backup.tar.gz

Собранному файлу можно присвоить любое имя. Главное — сохранить расширение .tar.gz. После этого архив можно распаковать:

$ tar xzvf big-backup.tar.gz

Комментарий

Описанный способ хорошо подходит для проведения архивации «на скорую руку» или перемещения большого количества файлов, но не используйте его для регулярной архивации. Если хотя бы один фрагмент будет испорчен, восстановить данные будет довольно трудно (особенно из сжатых файлов).

Для проведения надёжной и регулярной архивации рекомендуется использовать специализированные инструменты, такие как rsync или tar с опциями для создания нескольких томов и контроля целостности данных. Они предоставляют более гибкие возможности для восстановления данных при возникновении ошибок.

Масштабная архивация крупных проектов, особенно сжатых файлов, требует проверки целостности после каждой операции записи и чтения. Это позволит избежать ситуаций, когда один повреждённый фрагмент делает всю архивную копию бесполезной. Применение хэш-функций или контрольных сумм (например, md5 или sha256) на каждом этапе поможет снизить вероятность потери данных.

См. также

split(1), tar(1), cat(1); подробное руководство по архивации — в главе 16.