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

Проблема
Вы работаете с очень большим файлом — скажем, архивом .tar или огромным гра фическим изображением. Файл требуется сохранить на компакт-диске, но его
объем превышает объем одного диска.
Решение
Разбейте файл утилитой split, а затем преобразуйте новые файлы в образы .iso
и запишите их на диски. Сборка исходного файла осуществляется командой cat
Допустим, имеется 2-гигабайтный архив tar с именем big-backup. В следующем
примере он разбивается на 650-мегабайтные фрагменты. Емкость компакт-диска
составляет 700 Мбайт, но нужно оставить место для служебных данных:
$ split -b 650m big-backup.tar.gz
creating f i l e 'xaa'
creating f i l e 'xab'
creating f i l e 'xac'
Каждый файл теперь занимает около 682 Мбайт. Преобразуйте каждый файл
в образ .iso:
$ for i in xa*; do echo -e "$i"; mkisofs -o $i.iso $i; done
После завершения обработки команда Is выведет следующий результат:
$ Is
хаа xaa.iso xab xab.iso хае хае.iso
Теперь запишите каждый файл .iso на отдельный компакт-диск:
$ cdrecord -v -eject dev=0,l,0 xaa.iso
$ cdrecord -v -eject dev=0.1.0 xab.iso
$ cdrecord -v -eject dev=0.1.0 xac.iso
Чтобы восстановить разбитый архив, скопируйте файлы .iso с компакт-диска
на жесткий диск и воспользуйтесь командой cat:
$ cat хаа 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
Комментарий
Описанный способ хорошо подходит для проведения архивации «на скорую руку»
или перемещения большого количества файлов, но не используйте его для регу лярной архивации. Если хотя бы один фрагмент будет испорчен, восстановить
данные будет довольно трудно (особенно из сжатых файлов).
О проведении масштабной архивации рассказано в главе 16.
split(l), tar(l), cat(l); глава 16.