Утилиты CLI, резервное копирование: команда burncd
Если потребность в точном реплицировании файловых систем возникает не так уж и часто, то сохранение архивов данных -- процедура достаточно регулярная (по крайней мере, должна ею быть). И наиболее распространенными носителями для архивов ныне являются CD-R/RW и DVD диски, процедуру записи которых я и рассмотрю далее.
Мне известно два инструмента для записи CD-дисков: кросс-платформенный комплект cdrtools
и утилита burncd
, используемая только в BSD-системах. Первый к настоящему времени не описал только ленивый. А вот утилита burncd
известна относительно мало, и по причинам, которые станут ясными несколько позже, заслуживает подробного рассмотрения.
Подобно большинству исконных BSD-инструментов, использование burncd
для записи дисков -- дело не простое, а очень простое. И требует оно только наличия записывающего привода с ATAPI-интерфейсом. При этом нет необходимости ни в каких специфических настройках типа включения эмуляции SCSI через IDE (без чего до недавнего времени было не обойтись в Linux при использовании cdrtools
).
Предыварительно можно создать образ диска для записи, как это было описано на предыдущей странице. А непосредственно запись диска выполняется такой командой:
$ burncd -e -s max -f /dev/acd0 data iso_name fixate
Значения опций -- следующие:
-e
обеспечивает выдвижение лотка после записи,-s
-- скорость записи (по умолчанию -- 4, значениеmax
-- обеспечивает максимально возможную для данного накопителя и "болванки"),-f
-- имя файла устройства (в примере --/dev/acd0
).
Команда fixate
указывает на фиксирование сессии (подразумевается односессионная запись). Ну а data
предписывает запись диска с данными (а не аудиоCD) с образа name.iso
.
У burncd
есть еще несколько опций, с которыми можно ознакомиться посредством
$ man 8 burncd
В частности, полезной может быть опция -v
, выводящая информацию о ходе записи. А опция -t
осуществит имитацию записи, что позволяет в случае ошибки избежать порчи "болванки".
Для стирания CD-RW в burncd
предусмотрены команды blank
(быстрая очистка оглавления диска) и erase
(полная очистка диска):
$ burncd -e -f /dev/acd0 blank
или
$ burncd -e -f /dev/acd0 erase
соответственно. Нужно только помнить, что вторая операция может занять много времени -- столько же, сколько и запись).
Если для целей чисто резервного копирования (например, архива вида *.tar.gz) не требуется запись дисков, доступных из других операционок, burncd
можно использовать и без предварительного создания iso-образа (и, соответственно, без пакета mkisofs
). Все, что для этого нужно (помимо заблаговременно созданного архива подходящего размера) -- директива примерно такого вида:
$ burncd -f /dev/acd1c -s max data archive.tar.gz fixate
Правда, записанный таким образом диск не может быть ни прочитан в каких-либо других операционках, ни смонтирован как обычный CD -- доступ к нему потребует прямого обращения к файлу соответствующего устройства, например:
$ tar xzvf /dev/acd1c
Однако выполнить запись такого рода гораздо быстрее. Особенно значителен выигрыш во времени при записи очень большого массива данных. В этом случае их можно собрать в единый тарбалл, утилитой split
разбить на фрагменты подходящего размера:
$ split --split --bytes=650m archive.tar.gz [PREFIX]
где в качестве префикса можно указать какое-либо мнемонически полезное значение (дату создания архива, например), после чего последовательно записать кучу образовавшихся файлов (имеющих вид [PREFIX]aa
, [PREFIX]ab
, и так далее) почти так же, как было сказано выше:
$ burncd -f /dev/acd1c -s max data [PREFIX]?? fixate
Восстановление данных из такого архива выполняется следующим образом. Сначала содержимое полученной стопки дисков последовательно копируется в файлы на винчестере:
$ cp /dev/acd1c path2/file#
Затем они сливаются утилитой cat в единый архив:
$ cat file1 ... file# > archive.tar.gz
который и разворачивается обычным образом.
Возможность применения burncd
для резервного копирования без предварительного создания iso-образов определяет, по моему мнению, ее предпочтительность перед cdrecord
. Однако на ее использование накладывается несколько ограничений. Во-первых, как я уже сказал, она существует только в BSD-системах -- и это, конечно, главное. Во-вторых, она работает только с ATAPI-приводами. И если вероятностью наличия в пользовательской машине CD-R/RW со SCSI-интерфейсом можно пренебречь, то записывающие USB-устройства получают все большее распространение -- а перед POSIX-системой последние предстанут в виде SCSI CD ROM. И наконец, с некоторыми моделями даже ATAPI CD ROM burncd
отказывается работать категорически (правда, мне встречался один-единственный такой привод, и то уже давно).
Тем не менее, любое из вышеприведенных ограничений может быть причиной обращения к утилите cdrecord
из пакета cdrtools
. Как уже говорилось, это -- кросс-платформенный инструмент, который может быть собран в любом Unix.
Содержание . .