|
Linux и запись CD/DVD
Не буду разводить соплей и дискуссий на тему GUI/CLI, кому нравятся всякие красивые гуевые писалки - пусть подолжают их использовать, не буду ничего комментировать, ниже рассказ про то, как автор решил этот вопрос лет 10 назад для записи CD и для появившихся после них DVD. Чем будем пользоваться?
cdrtools Для нас интерес представляют две прогаммы из набора cdrtools
dvd+rw-tools
Изначально появился cdrecord, теперешний cdrtools. Он поддерживал
только SCSI резаки. Потом стало возможным работать и с IDE
устройствами, сначала через эмуляцию SCSI, а потом и напрямую. Вообще
идея все свести к SCSI интерфейсу и хоть как-то навести порядок в
зоопарке правильная и например новые SATA или Card Reader'ы как раз и работают именно
так. У меня тоже все работает через эмуляцию SCSI и не вижу смысла это
менять.
/sbin/rmmod ide-cd /sbin/modprobe ide-scsi "hdc=ide-scsi hdd=ide-scsi" /sbin/modprobe sgВ примере выше два резака включены как secondary master и secondary slave. Смотрим, какие модули загружены # /sbin/lsmod | grep ide ide-scsi 12048 0 # /sbin/lsmod | grep sr sr_mod 16984 0 (autoclean) cdrom 35104 0 (autoclean) [sr_mod]Все нормально. Если планируется запись не от root, у юзера должны быть права на чтение/запись /dev/sg? и /dev/scd?. Теперь самое время разобраться в адресации SCSI устройств. Смотрим что вообще есть на шине SCSI
# cdrecord -scanbus
Cdrecord-ProDVD-Clone 2.01.01a24 (i686-pc-linux-gnu) Copyright (C) 1995-2006 JЖrg Schilling
Linux sg driver version: 3.1.25
Using libscg version 'schily-0.9'.
scsibus0:
0,0,0 0) *
0,1,0 1) *
0,2,0 2) *
0,3,0 3) 'HP ' 'CD-Writer+ 9200 ' '1.0e' Removable CD-ROM
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) 'TOSHIBA ' 'DVD-ROM SD-R1312' 'X010' Removable CD-ROM
1,1,0 101) '_NEC ' 'DVD_RW ND-2510A ' '2.16' Removable CD-ROM
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) * 'ATA ' 'Hitachi HDM92924' 'P22O' Disk
1,6,0 106) *
1,7,0 107) *
scsibus2:
2,0,0 200) 'ICSI ' 'CF Card CF' '1.3A' Removable Disk
2,1,0 201) *
2,2,0 202) *
2,3,0 203) *
2,4,0 204) *
2,5,0 205) *
2,6,0 206) *
2,7,0 207) *
Видно, что в SCSI попало все - hdd SATA (1,5,0), card reader (2,0,0) и
собственно сами резаки. У меня подключено 3 устройства - честный SCSI HP 9200
и 2 IDE - TOSHIBA 1312 и NEC 2510.
Адресация SCSI никаким образом не совпадает с расположением устройств в корпусе компьютера, поэтому более удобно пронумеровать их снизу вверх или наоборот и создать такой файлик $ cat /etc/default/cdrom CDROM0="1,0,0" CDROM1="0,3,0" CDROM2="1,1,0" CD-R и CD-RW CD-RW диски нужно предварительно стирать. Пишем скрипт blankcd0 для работы с первым резаком
#!/bin/sh
. /etc/default/cdrom
cdrecord -vv dev=${CDROM0} speed=16 -blank=fast
В моем случае 3 резака и я просто потом скопировал blankcd0 в
blankcd1 и blankcd2, поменяв 'CDROM0' на соответственно
'CDROM1' и 'CDROM2'.Теперь можно вставить диск и просто сказать blankcd0 для его стирания.
Далее запись. Мне показалось неудобным каждый раз делать ISO образ,
где-то его сохранять и все прочее. проще и удобнее все делать на лету. $ cd /bin /bin$Смотрим, сколько займут места файлы на CD /bin$ writecd0.sh -s mkisofs 2.01.01a24 (i686-pc-linux-gnu) Scanning /bin Total extents scheduled to be written = 2331 2331Для 650Mb дисков максимальное значение 332500, для 700 (80min) - 359000. Тут все нормально и помещается на болванку, поэтому смело записываем /bin$ writecd0.sh -w writing speed = 32 mkisofs 2.01.01a24 (i686-pc-linux-gnu) Scanning /bin Writing: Initial Padblock Start Block 0 ... scsidev: '1,0,0' ...Через некоторое время запись будет завершена. При записи однократно прожигаемых CD можно добавить ключик 'slow' что приведет к записи на минимально возможной скорости. Рекомендую все архивные материалы записывать именно так. DVD+-R, DVD+-RW Теперь перейдем в DVD+-R/RW. Для непосредственно записи используется программа growisofs. В принципе это тот же dd, но не в файл или устройство, а на DVD болванку. growisofs умеет работать непосредственно с файлами устройств в /dev. В моем случае DVD резак - третий по счету на шине SCSI, поэтому ему соответствует /dev/scd2. Для удобства делаем линк # cd /dev # ln -s scd2 dvdЗабираем скрипт writedvd.sh. Он работает точно так же, как и его предшественник, но дополнительно понимает '-t' для эмуляции записи. Стирать ничего не нужно просто проверяем (-s) и записываем (-w). Что дальше?
Несколько особняком стоит вопрос проверки качества
записи. Настоятельно рекомендую проверять ВСЕ архивные диски! Вариантов
сделать это несколько. Можно просто скопировать все обратно на hdd или в
/dev/null. Можно использовать программы, например
cdck.
$ cd /cool/files/to/be/writen /cool/files/to/be/writen$ touch .md5sum /cool/files/to/be/writen$ mdc.plx /cool/files/to/be/writen$ cp ~/md5sum.last .md5sumДалее записываем все из нужного каталога (/cool/files/to/be/writen в примере) на CD/DVD. После записи монтируем диск, говорим cd в то место, где он примонтирован и опять же запускаем mdc.plx для сравнения /mnt/cdrom$ mdc.plx ... ... Changed File(s): ---------- Total: 0 New File(s): --------- Total: 0 Deleted File(s): --------- Total: 0Все OK. Лог изменений записывается и в ~/md5sum.log Кстати, можно настроить периодическую проверку каких-то каталогов из cron используя такой же метод. Все! |
| Copyright (c) 1999-2008 Alexey Semenoff |