BASH Programming - Введение


Запись CD образа на CD


Больше ничего не осталось делать. Если Вы не устали, лучшее время для команды

cdrecord -scanbus

Она должна сказать Вам к какому SCSI-устройству подсоединен Ваш CD-writer. Все другие методы предполагаемой информации так любезно выводимой cdrecord-ом удалены из HOWTO (в особенности немного опасная схема именования обобщенных SCSI устройств).

Перед тем, как показать Вам последнюю команду, позвольте мне предупредить Вас, что устройства записи CD должны обеспечиваться постоянным потоком данных, потому что у них маленький объем буферной памяти. Т.о. процесс записи образа CD не должен прерываться, или в результате CD будет испорчен. Достаточно просто прервать поток данных удаляя большой файл. Например: если Вы удаляете предыдущий образ размером 650Мб, ядро должно обновить информацию о 650000 блоках на жестком диске (предполагается размер блока 1кб на Вашей файловой системе). Это требует некоторое время и очень похоже на замедление дисковой активности на несколько секунд. Однако, чтение почты, просмотр web или компиляция ядра обычно не сказывается на процессе записи (на современных машинах).

Пожалуйста обратите внимание, что нет устройства записи, которое может снова устанавливать лазер и продолжать в первоначальном месте на CD, если оно сбилось. Следовательно любые сильные колебания или механический удар возможно уничтожит CD, который Вы пишете.

Если Вы мысленно подготовлены, оденьте черный халат, умножьте SCSI-id устройства CD на номер версии SCSI и зажгите столько свечей, произнесите две главы ASR-FAQ (группа новостей alt.sysadmin.recovery) и в конце наберите: (прим. пер.: вовсе не обязательно выполнять все эти религиозные темочки :)

shell> SCSI_BUS=0 # взято из листинга 1 "scsibus0:" shell> SCSI_ID=6 # взято из листинга 1 "TOSHIBA XM-3401" shell> SCSI_LUN=0 shell> cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \ -data cd_image

# то же, что и выше, но короче: shell> cdrecord -v speed=2 dev=0,6,0 -data cd_image

Для лучшей читаемости, координаты устройства записи помещены в три переменные окружения с именами:SCSI_BUS, SCSI_ID, SCSI_LUN. Опция -data не обязательна, но это дает создать командную строку подобную той, которая используется для записи audio-CD.

Если Вы использует cdrecord для перезаписи CD-RW, Вы должны добавить опцию "blank=..." для стирания старого содержимого. Пожалуйста прочтите man-страницу для понимания различных методов очистки содержимого CD-RW.

В то время, когда каждый, исключая меня, имеет 400МГц машину, люди направляют выход mkisofs прямо на cdrecord:

shell> IMG_SIZE=`mkisofs -R -q -print-size private_collection/ 2>&1 \ | sed -e "s/.* = //"` shell> echo $IMG_SIZE shell> [ "0$IMG_SIZE" -ne 0 ] && mkisofs -r private_collection/ \ |cdrecord speed=2 dev=0,6,0 tsize=${IMG_SIZE}s -data - # не забудьте s --^ ^-- чтение данных с STDIN

Первая команда запускается для определения размера образа (для этого Вам нужен mkisofs из дистрибутива cdrecord). Может быть Ваш writer не требует указания размера образа, тогда Вы можете это пропустить. Полученный размер должен быть подставлен как tsize-параметр для cdrecord (он помещается в переменную окружения IMG_SIZE). Вторая команда - последовательность mkisofs и cdrecord, соединенные в поток.



Содержание раздела