Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Запись оптических дисков с использование консольных утилит  (Прочитано 5797 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн www777

  • Автор темы
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2765
    • Просмотр профиля
Мне нужно иметь возможность записывать Audio CD диски из образа cue+wav из за отсутствия программ с графическим интерфейсом которые меня бы меня устраивали, я интересуюсь утилитами которые это будут делать через терминал.
Сегодня мне удалось записать такой диск вот так:
cdrdao write --device /dev/sr0 osi.cue sr0 - это мой привод osi так назывался муз альбом, в общем так образ назывался. Всё записалось но мне нужно
1. Иметь возможность управлять скорость привода, как это делать не знаю
2. Мне необходима возможность установки офсета то есть смещение при записи диска, на примере того как это умеет EAC.

Далее Как сделать диск CD-Extra то есть записав муз данные первой сессией, а вторую сессию сделать с данными. А как можно проводить верификацию после записи?
Было бы здорово если бы рассказали как создавать UDF диск с данными CD или DVD так же с помощью какой нибудь консольной утилитой.
Было бы ещё более здорово, если бы мне кто нибудь предложил почитать книгу по этой теме, может что то есть в электронном виде подобное?

Оффлайн valentin_13

  • Активист
  • *
  • Сообщений: 439
    • Просмотр профиля
Re: Запись оптических дисков с использовани&#
« Ответ #1 : 25 Сентября 2010, 02:18:20 »
Преобразование в wave с дальнейшей записью -- не вариант? k3b, например, прямо так и советует при попытке записать <losseless>+cue
Вот здесь предлагают использовать gCue2tracks.

Оффлайн www777

  • Автор темы
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2765
    • Просмотр профиля
Re: Запись оптических дисков с использовани&#
« Ответ #2 : 25 Сентября 2010, 09:04:39 »
Преобразование в wave с дальнейшей записью -- не вариант? k3b, например, прямо так и советует при попытке записать <losseless>+cue
Вот здесь предлагают использовать gCue2tracks.
Да вы тему читать будете внимательно или нет? Я что говорил что мне нужно записывать cue+flac или cue+ape? Переконвертирование из формата в формат это отдельная тема. А предложение разрезать на треки это жесть. Вы ещё посоветуйте мне поставить нормальную ОС :-D

Оффлайн alecsartania

  • Старожил
  • *
  • Сообщений: 1565
  • УМка.
    • Просмотр профиля
Все что ниже пользовал не раз c даавних времен. В OS/2.

Записывать диски мы будем с помощью следующих пакетов программ:

    * Cdrtools
    * Cdrdao
    * CDParanoia

Все они являются свободными и кроссплатформенными  [2].

В пакет Cdrtools входят следующие утилиты:

    * mkisofs — создание «образа» диска с данными для последующей его записи на «болванку»;
    * Cdrecord — запись диска с данными или аудио;
    * Cdda2wav — копирование дорожек с аудио компакт-диска на винчестер;
    * Readcd — чтение (посекторное) компакт-диска;
    * Isoinfo — получение информации о CD или его «образе»;
    * Devdump, Isovfy, Isodump — проверка «образа» диска или его самого.

Cdrdao пишет аудио-диски и диски с данными в режиме DAO на основе созданного по специальным правилам текстового файла с описанием содержания (toc-файл). Этой программой можно очень удобно скопировать CD разного типа (CR-ROM, audio, CD-Text).

CDParanoia предназначена для копирования трэков с аудио-компактов с бескомпромиссным качеством. Копирование производится чисто в цифровом виде, без каких либо аналого-цифровых преобразований (в частности, при этом никак не задействуется звуковая плата и аудиокабель, соединяющий её с приводом, т. к. данные передаются по интерфейсному шлейфу); скорость копирования приносится в жертву качеству; проблемные участки перечитываются неоднократно; при копировании сильно повреждённых дисков — например, поцарапанных — делается попытка (более или менее успешная) восстановления утраченного интерполяционными методами. Название программы, впрочем, достаточно красноречиво само по себе.

Установка этих пакетов в свободных ОС не должна представлять сложностей, поскольку они включаются в состав дистрибутивов этих систем — можно воспользоваться для этого соответствующими штатными средствами. В дистрибутивах Linux Debian и от ALT Linux Team сделать это наиболее просто:

[root@localhost root]# apt-get install cdrtools cdrdao cdparanoia

Желающие могут, конечно, поставить всё это из исходных текстов, а пользователям Windows придётся скачать бинарники с сайтов разработчиков.

Пришло время проверить, как это работает. Воспользуемся программой cdrecord, имеющей следующий формат:

cdrecord [общие опции] dev=device [опции для трэка] track1...trackn

Среди общих опций -v и -dummy — наши лучшие друзья; первая заставляет программу быть сильно «разговорчивее», следовательно, позволяет быстрее разобраться с возможными ошибками; вторая реализует имитацию записи, что поможет вам обойти какие-либо «подводные камни», проведя предварительную репетицию — полезная вещь, если вы никогда раньше не писали диски.

Дадим команду

[ziga@localhost tmp]$ cdrecord -scanbus

которая сканирует все SCSI устройства на всех SCSI шинах и выводит результат поиска; в нём следует найти строчку примерно такого вида:

   0,0,0     0) 'RICOH   ' 'CD-R/RW MP7200A ' '1.30' Removable CD-ROM

где dev=0,0,0 — это как раз то, что нам нужно будет указывать в опции dev=device (SCSI адрес привода в формате scsibus,target,lun).

Если привод достаточно новый, то он, скорее всего, является SCSI-3/MMC-совместимым  [3], в этом случае можно воспользоваться опцией -prcap, чтобы узнать его возможности. Команда

[ziga@localhost tmp]$ cdrecord -v -prcap dev=0,0,0

выведет длиннющий список того, что может и что не может делать ваш резак (естественно, в этом примере и во всех дальнейших нужно, в случае необходимости, заменять в опции dev=0,0,0 SCSI адрес тем, что вы обнаружите в выводе предыдущей команды). Советую его внимательно изучить — некоторые сведения обычно не приводятся в документации, а если её вообще нет (типично для OEM поставок) — тем более полезно. Является ли привод SCSI-3/MMC-совместимым, и какой драйвер для него используется, можно узнать командой

[ziga@localhost tmp]$ cdrecord -v -checkdrive dev=0,0,0

Если в выводе найдены строки вида

Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).

то это как раз такой привод. Cdrecord поддерживает многие опции, специфичные для устройств некоторых производителей — VariRec (Plextor), Audio Master и DiskT@2 (Yamaha), различные варианты защиты от опустошения буфера — Burn-Proof (Sanyo), Just Link (Ricoh) и т. п. Команда

[ziga@localhost tmp]$ cdrecord -v -checkdrive driveropts=help dev=0,0,0

поможет узнать, какие именно опции такого рода поддерживаются для вашего привода.

Начнём с чего-нибудь простенького — вставим в привод любую чистую болванку и узнаем её характеристики, считав ATIP:

[ziga@localhost tmp]$ cdrecord -v -atip dev=0,0,0

ATIP (Absolute Time In Pregroove, т. е. абсолютная длительность ведущей дорожки) — это предварительно записанный раздел диска, в котором содержатся такие его характеристики, как размер блока, число блоков на диске (можно, следовательно, узнать ёмкость диска), является ли он перезаписывемым, имя изготовителя (не то, что указано на обложке — это всего лишь лейбл, под которым диск продаётся) и другие данные.

Попробуем почистить «эрвэшку» (CD-RW). Кладём её в привод и набираем команду

[ziga@localhost tmp]$ cdrecord -v speed=10 blank=fast dev=0,0,0

Здесь опция speed=10, как нетрудно догадаться, означает скорость записи, а blank=fast — тип очистки, в данном примере fast говорит о том, что чистятся только служебные области диска — TOC (Table Of Contents — таблица содержания), PMA (Program Memory Area) и pregap — специальный промежуток перед первым трэком, сами данные остаются нетронутыми. Можно почистить диск полностью, указав blank=all; имеются и другие варианты чистки. Кому доводилось форматировать в разных режимах дискеты — легко увидит здесь некую аналогию. Чистить CD-RW надо каждый раз, когда мы хотим записать на ранее использованный диск что-то новое.

То, какие данные и каким образом могут быть размещены на CD, определяется рядом стандартов, созданных как международными организациями, так и отдельными фирмами. В частности, формат аудио CD описывается в так называемой «Красной Книге» (Red Book), дисков с различными цифровыми данными — в «Жёлтой Книге» (Yellow Book), записываемых CD — в «Оранжевой Книге» (Orange Book) и т. д.

CD-R или CD-RW может быть записан как в один присест — это запись в режиме DAO (Disc-At-Once, т. е. диск-за-раз), так и за несколько подходов — в режиме TAO (Track-At-Once, т. е. трэк-за-раз). Вариацией DAO является режим SAO (Session-At-Once — сессия-за-раз), он позволяет пользоваться возможностями DAO, но при этом можно писать несколько сессий. Сессия — это отдельный сегмент, который может содержать несколько трэков, причём любого вида. Чтобы обычный бытовой аудиоплеер или CD-ROM привод могли прочитать диск, последняя сессия на нём должна быть «закрытой». Если пишется мультисессионный диск (т. е. содержащий несколько сессий), то после окончания записи и закрытия текущей сессии, должна быть открыта следующая, иначе диск окажется «закрытым», и на него ничего нельзя будет дописать, даже при наличии на нём свободного места. Диск, записанный в одну сессию, имеет три основных области — lead-in (вводную, где размещается, в частности, TOC, в которой указывается, где и какие данные размещены), область с собственно данными и lead-out (выводную). Первая и последняя играют чисто служебную роль, на «открытом» диске, если он пишется не в режиме DAO, они ещё не записаны, такой диск, следовательно, не имеет TOC (она в это время помещается в PMA), поэтому на обычных приводах они и не могут быть прочитаны. При записи в режиме DAO lead-in пишется сразу, поскольку содержание диска известно заранее. Несколько сессий могут быть связаны в последовательную «цепочку», в которой TOC предыдущей сессии указывает на TOC следующей, поэтому привод CD-ROM сможет «увидеть» данные, записанные во всех сессиях; бытовые аудиоплееры такой возможности лишены — они распознают только первую сессию, впрочем, это как раз позволяет создавать «смешанные» диски — такие, как CD-Extra.

Файловая система, в которой пишутся диски с данными, определена стандартом ISO-9660. Существует несколько уровней этого стандарта. Для всех уровней имена файлов и каталогов ограничены 31 символом, максимальная глубина вложенности каталогов — 8, общая длина пути не должна превышать 255 символов. Имена не должны содержать никаких символов, кроме латинских букв в верхнем регистре (A..Z), цифр, точки и знака подчёркивания. Первый уровень накладывает ещё большие ограничения — имена должны быть в формате 8+3 (имя + точка + расширение) для максимальной совместимости со всеми операционками, фактически — с MS DOS и её клонами; в уровнях есть и другие различия. Если такая широкая совместимость не нужна, можно смело использовать третий уровень.

Rock Ridge является расширением ISO-9660, позволяя использовать в именах те же символы, что используются в вашей локальной файловой системе, в частности, буквы могут быть и в нижнем регистре и даже не из латинского алфавита — например, русскими; поддерживаются такие специфичные для файловых систем *nix вещи как ссылки и права доступа; глубина вложения каталогов может быть любой (применяется система переадресации); кроме того, Rock Ridge — расширяемый стандарт. Операционки от Microsoft его не поддерживают, но поскольку он является всего лишь расширением ISO-9660, то диск, записанный с использованием Rock Ridge, можно в них прочитать, только длинные имена файлов не будут доступны.

В Microsoft, в свою очередь, придумали ни с чем не совместимый «стандарт» — Joliet. В нём имена файлов и каталогов хранятся в юникоде, точнее говоря, в UTF-16, и имеют ограничение на длину в 64 символа.

В мире Макинтошей, где, как всегда, «think different», используется повсеместно, в том числе и на CD, файловая система HFS (Hierarchical File System), хотя на Маках можно использовать и ISO-9660 и некоторые её расширения, сделанные в Apple, поддерживается и Joliet.

Имеется также файловая система UDF (Universal Disk Format), основанная на стандарте ISO/IEC 13346 (ECMA-167), она используется для так называемой пакетной записи — диск (обычно CD-RW) форматируется специальным образом, при этом теряется часть его ёмкости на размещение служебной информации, но после такой процедуры он превращается в своего рода «большую дискету», на которую можно писать файлы, стирать их и т. д.

В Linux можно и писать и тем более читать диски в любой из этих файловых систем, в частности, можно записывать «гибридные» диски, содержащие в оглавлении деревья Rock Ridge, Joliet и HFS, ссылающиеся при этом на одни и те же файлы; поддержка UDF, правда, имеется в Cdrtools пока только на экспериментальном уровне (есть также неофициальный патч ядра), но читаются UDF-диски в Linux без проблем  [4].

Попробуем сейчас создать копию какого-либо CD-ROM, например, вашего дистрибутива Linux (подарите её потом вашему другу, это абсолютно законно, в отличие от копий любых проприетарных систем). Создадим для этого файл с «образом» этого CD. В просторечии «образ» диска часто называется «изошкой», из-за обыкновения присваивать файлам с такими образами расширения iso, в частности, это относится и к размещаемым на ftp серверах файлам с образами дистрибутивных дисков Linux, FreeBSD и т. п. Можно воспользоваться стандартной утилитой dd, но лучше применить специально для этого предназначенную программу readcd из пакета Cdrtools:

[ziga@localhost tmp]$ readcd dev=0,0,0 -v f=cd.iso

Опция f=cd.iso означает, что мы хотим присвоить файлу образа имя cd.iso (и он будет размещён в текущем каталоге; в противном случае следует указать путь к файлу). Если всё прочиталось нормально — пишем созданный «образ» на CD:

[ziga@localhost tmp]$ cdrecord -v -dao dev=0,0,0 speed=20 -data cd.iso

Здесь опция -dao означает, что диск будет записываться в DAO режиме. Точнее говоря, cdrecord запишет его в SAO, если привод это поддерживает, в частности, диск будет закрыт по окончании записи данных. Опция -data говорит о том, что мы пишем диск с данными, а не аудио-компакт (можно не указывать, т. к. применяется по умолчанию для всех файлов, кроме тех, что оканчиваются на .au или .wav — для последних опция по умолчанию -audio). Перед записью можно сделать проверку «образа» — например, смонтировать его:

[root@localhost root]# mount -o loop -t iso9660 /tmp/cd.iso /mnt/disk

и посмотреть его содержимое:

[ziga@localhost tmp]$ ls -R /mnt/disk

или сделать куда более надёжный контроль читаемости всех файлов:

[ziga@localhost tmp]$ tar cvf /dev/null /mnt/disk

Можно воспользоваться также специальной утилитой проверки «образа» isovfy:

[ziga@localhost tmp]$ isovfy cd.iso

После записи диск тоже неплохо проверить на отсутствие ошибок чтения. Пофайловую проверку можно сделать, например, с помощью tar, как было описано выше — смонтировав диск и «заархивировав» его содержимое в /dev/null. Можно проверить его поблочную читаемость:

[ziga@localhost tmp]$ readcd -v dev=0,0,0 f=/dev/null

Cdrdao также прекрасно справится с копированием диска, особенно удобно ей пользоваться при наличии двух приводов — CD-ROM и CD-RW. Её формат:

cdrdao команда [опции] toc-file

Кладём CD-ROM в «читалку», а болванку — в резак и даём команду:

[ziga@localhost tmp]$ cdrdao copy --source-device 0,1,0 --device 0,0,0 --source-driver generic-mmc --driver generic-mmc
data.toc

Команда copy сама совершит все шаги по копированию — будет создан временный файл с образом диска (его имя и путь можно задать самому опцией --datafile), который после копирования на болванку будет удалён. Опции --source-device и --device задают адреса «читалки» и «писалки» соответственно, а опции --source-driver и --driver — применяемые для них драйверы. Опцией --on-the-fly можно провести копирование «на лету», т. е. без создания временного «образа» диска. Если есть только один привод, то «на лету» копировать, конечно, не получится, при этом опции --source-device и --source-driver указывать не надо, и cdrdao сама запросит у вас болванку после создания файла «образа». Точно так же можно использовать эту команду для копирования аудио-компакта. После создания копии можно с сервера CDDB запросить информацию для последующей передачи её вашему любимому CD-плееру:

[ziga@localhost tmp]$ cdrdao read-cddb --cddb-directory /home/ziga/.cddb data.toc

Команда read-cddb осуществляет этот запрос, опция --cddb-directory позволяет сохранить полученную информацию в вашем домашнем каталоге. Если не устраивает то, какие серверы опрашиваются по умолчанию (ряд зеркал freedb), можно задать их список самому опцией --cddb-servers; запрос можно также сделать уже во время копирования, используя опцию --with-cddb. С копированием аудио «на лету» советую быть осторожнее — cdrdao использует для копирования аудио-трэков paranoia, причём по умолчанию — в самом «строгом» режиме, так что если диск читается не идеально, то запись может сорваться; лучше скопировать в «образ», а потом «прожечь» болванку:

[ziga@localhost tmp]$ cdrdao read-cd --device 0,0,0 --driver generic-mmc data.toc
[ziga@localhost tmp]$ cdrdao write --speed 20 --device 0,0,0 --driver generic-mmc data.toc

Назначение команд read-cd и write, а также опции --speed полагаю, ясно без пояснений, файл «образа» по умолчанию получает имя data.bin.

Копировать аудио-трэки можно также программами cdda2wav из Cdrtools и CDParanoia. Формат cdda2wav:

cdda2wav [опции] имя (имена) файла (файлов)/каталогов

Попробуем сделать не просто копию аудио-компакта, а превратим её в CD-Text диск. CD-Text — формат, созданный фирмой Philips для кодирования информации об исполнителе и композициях на аудио CD. Команда

[ziga@localhost tmp]$ cdda2wav -v255 -D0,0,0 -B -Owav -paranoia -L0

скопирует трэки с диска. Опция -D указывает на адрес привода, -B — на то, что каждый трэк должен быть сохранён в отдельный файл. -O определяет формат файла, возможные значения — wav (по умолчанию), aiff, aiffc, au, sun, cdr, raw. Трэки на аудио CD — это 16-битный стереозвук с частотой дискретизации 44100 Гц, закодированный в линейной PCM (Pulse Сode Modulation). В том же формате окажутся и их копии на диске, только при выборе в опции -O значения wav (или если она опущена), в начало всех файлов будут добавлены специальные заголовки, которые позволяют проигрывателям аудио-файлов узнавать их формат. Опция -paranoia заставит cdda2wav использовать для чтения соответствующую библиотеку, а -L устанавливает режим опроса cddb серверов — возможные значения 0 (интерактивный режим) и 1 (используется первая найденная запись). Для всех трэков, копии которых сохраняются в файлах audio_nn.wav, создаются также текстовые файлы audio_nn.inf, содержащие информацию о трэке, в том числе, вытянутую с cddb; формат такого файла достаточно прозрачный, так что в дальнейшем вы при желании сможете писать по его образцу inf-файлы сами, например, для создания своего аудио CD. Интересная деталь — если подсчитать суммарный объём полученных wav-файлов, то он может показаться что-то уж очень большим. Например, 70-минутный альбом Queen «Made In Heaven» даёт в итоге 712 MB копий его 13 трэков. Болванки производятся, в основном, двух видов — на 650 MB (74 мин. аудио) и 700 MB (80 мин. аудио). Возникает резонно вопрос — как столько поместилось на стандартный компакт и как теперь это записать? Объяснение «феномена» простое — секторы на аудио-диске имеют длину 2352 байта, а на диске с данными — 2048 байтов, разница используется для контроля и исправления ошибок — для данных это критично, для аудио — нет (поменяйте, например, в созданном вами архиве 1 бит и вы больше не сможете его открыть, а то же самое в аудиотрэке не почувствуете на слух совершенно точно).

Теперь «прожигаем» болванку:

[ziga@localhost tmp]$ cdrecord -v dev=0,0,0 speed=20 -dao -text -audio -useinfo *.wav

Опция -text использована здесь как раз для создания CD-Text, её надо применять совместно с -useinfo, чтобы сказать cdrecord использовать inf-файлы. Посмотрим, что мы получили в итоге:

[ziga@localhost tmp]$ cdda2wav -D0,0,0 -H -J

Опция -J — не записывать трэки, только получить информацию о диске, -H — не создавать inf-файлы. Если будут выданы название альбома, имя (название) исполнителя и т. д. — всё в порядке. В настоящее время всё, что записывается в CD-Text, может быть только в ISO-8859-1 кодировке, поддержка других наборов символов пока в Cdrtools отсутствует.

Создадим теперь свой диск с данными. Подготовим то, что хотим на него записать — удобнее будет, если всё это собрать в одном каталоге, но можно использовать и любое число каталогов или создать нужные ссылки, чтобы не пришлось писать слишком длинную команду. Программа mkisofs подготовит нам «изошник» для последующей записи, её формат:

mkisofs [опции] [-o имя файла] путь_к_данным

Даём команду:

[ziga@localhost tmp]$ mkisofs -r -J -o cd.iso ~/my_data/

которая всё, что находится в каталоге ~/my_data, запишет в «образ» с именем cd.iso. Опции -r и -J нужны для того, чтобы mkisofs создала в дополнение к ISO-9660 дереву в TOC ещё и Rock Ridge и Joliet деревья соответственно. Если используются русские имена в названиях файлов/каталогов, то для корректного их отображения на диске следует предпринять дополнительные действия: опции -input-charset и -output-charset определяют наборы символов, используемые в локальной файловой системе и в Rock Ridge именах файлов на диске соответственно (в России традиционно используется в *nix koi8-r, но в последнее время появились альтернативы). С Rock Ridge проблем никаких не будет, если использовать диск при той же локали, в которой он будет записан, а для Joliet необходимо указать обязательно -input-charset, можно и совместить эти две опции:

[ziga@localhost tmp]$ mkisofs -v -r -jcharset koi8-r -o cd.iso ~/my_data/

Если в ~/my_data есть ссылки, то надо использовать опцию -f, чтобы в созданном mkisofs «образе» появились файлы/каталоги, на которые эти ссылки указывают (разумеется, если это нужно).

Как узнать заранее, сколько места займут наши данные на CD? Можно использовать и стандартную утилиту du, но наиболее точно подсчитает размер сама mkisofs:

[ziga@localhost tmp]$ mkisofs -q -r -J -print-size ~/my_data/

Размер будет выдан в секторах, поделив его на 512, получим результат в более привычных мегабайтах. Важно использовать при этом те же опции, что будут применены для создания «образа» диска (кроме -v/-q; последняя здесь была использована для пресечения ненужной в данный момент «болтливости», поскольку интересовал только размер файла). Это поможет избежать ситуации, когда созданный mkisofs «образ» диска не помещается на болванку.

Можно писать диски «на лету», используя каналы:

[ziga@localhost tmp]$ mkisofs -r -J ~/my_data | cdrecord -v dev=0,0,0 fs=32m speed=20 -

Диск будет записан без создания его «образа». Здесь применена опция fs, в которой указывается cdrecord объём оперативной памяти под буфер. В документации рекомендуется выбирать в пределах 4-32 MB, но не более половины доступной RAM (4 MB — значение по умолчанию). Оптимальный его размер зависит от вашего железа и других параметров; если не получается нормально записать диск без указания этой опции, следует поэкспериментировать.

Запишем теперь CD-Extra в качестве примера мультисессионного диска. CD-Extra (в девичестве CD-Plus) — формат двухсессионного компакта, первая сессия которого — CD-DA, т. е. аудио-трэки, а вторая сессия — данные. Аудио-трэки пишем именно в первой сессии, чтобы можно было послушать такой диск на бытовом плеере. На мультисессионных CD много места расходуется при открытии сессий на служебную информацию — 23 MB для первой сессии, 14 MB — для каждой последующей, учтите это при подсчётах.

Скопируем трэки аудио CD программой CDParanoia. Формат команды:

cdparanoia [опции] span [файл]

Копируем:

[ziga@localhost tmp]$ cdparanoia -v -d /dev/cdrom2 -B "1-"

Опция -d определяет устройство, с которого будут копироваться трэки (по умолчанию это /dev/cdrom), -B указывает копировать каждый трэк в отдельный файл (их имена при этом имеют вид track01.cdda.wav и т. п.), аргумент "1-" — то, что копирование должно быть с первого трэка до конца диска. Вывод программы очень нагляден — есть индикатор прогресса, процесс копирования иллюстрируется смайликами — в зависимости от успешности процедуры. Запишем теперь полученные трэки:

[ziga@localhost tmp]$ cdrecord -v -dao -multi -audio *.wav

Назначение опции -multi очевидно. Получим информацию для создания «образа» второй сессии:

[ziga@localhost tmp]$ cdrecord -v dev=0,0,0 -msinfo

С опцией -msinfo cdrecord даст нам информацию в виде, например,

0,179360

Здесь первое число — номер первого сектора первого трэка последней сессии — т. е. её начало, второе число — начало новой сессии. Создаём теперь «образ» для второй сессии:

[ziga@localhost tmp]$ mkisofs -r -J -C 0,179360 -o cdextra.iso ~/my_data/

Опция -C предназначена для указания места, где дожны располагаться на CD наши данные (числа, как нетрудно заметить, взяты из вывода предыдущей команды). Записываем вторую сессию:

[ziga@localhost tmp]$ cdrecord -v dev=0,0,0 -data speed=20 cdextra.iso

Это всё. А как записать «обычный» мультисессионный диск?

[ziga@localhost tmp]$ mkisofs -r -J -o multi.iso ~/my_data/
[ziga@localhost tmp]$ cdrecord -v speed=20 -multi -eject multi.iso

Добавим теперь в каталог ~/my_data ещё файлов/каталогов.

[ziga@localhost tmp]$ cdrecord dev=0,0,0 -msinfo
0,18666
[ziga@localhost tmp]$ mkisofs -o multi2.iso -r -J -C 0,18666 -M /dev/cdrom2 ~/my_data/

Опция -M служит для слияния уже существующих данных на CD с новым «образом» multi2.iso, должна использоваться совместно с -C.

[ziga@localhost tmp]$ cdrecord -v speed=20 -multi -eject multi2.iso
[ziga@localhost tmp]$ cdrecord dev=0,0,0 -msinfo
18666,27958

Добавим ещё что-нибудь в ~/my_data и продолжим:

[ziga@localhost tmp]$ mkisofs -o multi3.iso -r -J -C 18666,27958 -M /dev/cdrom2 ~/my_data/
[ziga@localhost tmp]$ cdrecord -v speed=20 -eject multi3.iso

Теперь всё — диск, содержащий 3 сессии, записан полностью, закрыт и даже «выехал» из привода (-eject). На нём доступны все данные, содержащиеся сейчас в каталоге ~/my_data.

Программа mkisofs обладает рядом уникальных возможностей. Одна из них — создание образа диска, в котором файлы расположены в заданном вами порядке — полезная штука при записи компактов с музыкой в OGG Vorbis или mp3. Если писать диск обычным образом, то в соответствии со стандартом ISO-9660, файлы и каталоги будут на нём расположены в алфавитном порядке, мы же хотим, чтобы они оказались записаны в порядке следования композиций. Поэтому, если давать файлам осмысленные имена, а не просто track01.ogg и т. п., то чтобы диск проигрывателем не дёргался постоянно в поисках следующей композиции, надо подготовить специальный файл, который будет передан mkisofs в качестве аргумента опции -sort. Создадим тестовый каталог test с тремя каталогами в нём, в каждом из которых будет несколько файлов, например, так:

[ziga@localhost tmp]$ ls -R test
test:
dir_1
dir_2
dir_3

test/dir_1:
file_a
file_b
file_c

test/dir_2:
file_k
file_l

test/dir_3:
file_x
file_y
file_z

Делаем файл file_sort:

test/dir_3 5000
test/dir_3/file_y 6000
test/dir_2/file_l 8000
test/dir_1/file_c 1000

В этом файле каталогам/файлам присваиваются веса — в начале идёт имя файла/каталога, а затем через ровно один пробел или символ табуляции — вес. По умолчанию все веса имеют нулевое значение, их можно задать как положительными, так и отрицательными. В первой строке всем файлам из каталога dir_3 мы присвоили вес 5000, но в следующей строке конкретному файлу file_y из этого каталога — больший вес, 6000. На диске файлы будут расположены в порядке уменьшения весов. Каталоги при этом не сортируются, они остаются расположенными в алфавитном порядке. Делаем теперь «образ» диска:

[ziga@localhost tmp]$ mkisofs -r -J -sort file_sort -o cdsort.iso test

и смотрим, что получилось, командой:

[ziga@localhost tmp]$ isoinfo -l -R -i cdsort.iso

Аргумент опции -i указывает на имя файла, -R — то, что информацию надо дать по дереву Rock Ridge, -l — вывод сформатировать в стиле команды ls. В выводе мы получим то, в каких секторах какие файлы расположены. Сделайте «образ» диска без опции -sort и сравните. Несколько замечаний:

   1. В TOC файлы и каталоги не сортируются, поэтому и приходится смотреть результат программой isoinfo — ls тут не поможет.
   2. С именами по-русски, к сожалению, всё это не работает.
   3. Пустые файлы, т. е. имеющие нулевую длину, не сортируются.
   4. Пути в файле file_sort должны быть такими, как их видит mkisofs.

Разумеется, я не описал и десятой доли возможностей рассматриваемых здесь программ. Остальное вы сможете найти в их документации.

Работа в консоли приятна и удобна, но можно сделать её ещё удобнее — почти все упомянутые здесь программы используют специальные переменные окружения и настроечные файлы. Например, cdrecord использует настройки, сделанные в файле /etc/default/cdrecord (в некоторых дистрибутивах /etc/cdrecord.conf). Мой файл /etc/default/cdrecord:

CDR_DEVICE=ricoh
CDR_SPEED=20
CDR_FIFOSIZE=4m
# drive name    device  speed   fifosize driveropts
ricoh=          0,0,0   -1      -1       ""
rw=             0,0,0   10      -1       ""
fly=            0,0,0   -1      8m       ""

Теперь по умолчанию dev=0,0,0, speed=20, fs=4m, записать болванку из «образа» cd.iso в режиме DAO можно командой

[ziga@localhost tmp]$ cdrecord -v -dao cd.iso

Можно поместить в /etc/profile

CDDA_DEVICE=0,0,0
export CDDA_DEVICE

и опускать в команде cdda2wav опцию -D0,0,0. Записав в ~/.bashrc

alias fblank='cdrecord -v dev=rw blank=fast'

делаем быструю очистку Hi-Speed CD-RW командой:

[ziga@localhost tmp]$ fblank

mkisofs может использовать информацию из файла .mkisofsrc, который она ищет последовательно в текущем каталоге, домашнем и каталоге с её бинарником. Запишем в такой файл

VOLI=Vasya Pupkin cOOL CD

и получим диск с соответствующим идентификатором тома (это то, что пользователи Windows и Mac OS видят как название вставленного в привод CD). Cdrdao смотрит настройки в файлах /etc/cdrdao.conf, /etc/default/cdrdao, $HOME/.cdrdao. Мой .cdrdao:

write_device   : "0,0,0"
write_driver   : "generic-mmc"
write_speed    : 20
read_device    : "0,1,0"
read_driver    : "generic-mmc"
cddb_directory : ".cddb"

Можно теперь скопировать диск командой:

[ziga@localhost tmp]$ cdrdao copy data.toc

Во всех программах введённые в командной сроке опции изменяют соответствующие значения из настроечных файлов и переменных окружения.
Дома Linux Mint 21.1 / 22.00

Оффлайн armad

  • Активист
  • *
  • Сообщений: 629
    • Просмотр профиля
alecsartania браво! Великолепный пост!
Ubuntu 10.04. 2.6.35-25-generic-pae Проблем нет.

 

Страница сгенерирована за 0.024 секунд. Запросов: 20.