Запись CD дисков в консоли

Материал из Ай да Linux Wiki
Версия от 16:55, 27 июня 2014; Langator (обсуждение | вклад) (Новая страница: «Зачастую проще воспользоваться консолью для записи CD/DVD дисков, нежели использовать гра…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Зачастую проще воспользоваться консолью для записи CD/DVD дисков, нежели использовать графические утилиты, а зачастую это единственный вариант. И нет ничего проще! Для этого нам понадобятся: cdrecord и mkisofs. В gentoo они находятся в app-cdr/cdrtools.

Несколько терминов, связанных с форматами файлов:

- Yellow Book: физический формат CD с данными.
- Orange Book: физический формат для записываемых компакт-дисков.
- CD-MO --- магнито-оптические диски.
- CD-WO --- единожды записываемые диски (включают в себя и гибриды наподобие Фото-CD).
- CD-RW --- перезаписываемые диски.
- ISO-9660: Старый стандарт расположения данных, позволяющий использовать только стандарт 8.3 для имен файлов (т.е. 8 символов - имя файла и 3 - расширение).
- Rock Ridge: Расширение ISO-9660, предполагающее использование длинных имен для файлов и UNIX-подобных ссылок. Позволяет сохранить все атрибуты файла, такие как владелец и права доступа. Атрибуты UNIX-файлов при чтении диска в Windows не отображаются.
- Joliet: Расширение ISO-9660, разработанное Microsoft, которое позволяет использовать символы Unicode в именах файлов, так же как и использовать длинные  имена файлов. Кроме того, Joliet предоставляет возможность создания урезанных имен для совместимости с MS-DOS, выглядящих наподобие FILENA~1.TXT. Позволяет использовать имена файлов длиной до 64 символов, включая пробелы.
- El Torito: Спецификация для загрузочных компакт-дисков.
- HFS (Hierarchical File System): Оригинальная файловая система компьютеров Macintosh.
- Мультисессия: Позволяет добавлять файлы в любое время, после записи одиночной сессии. Для того, чтобы диски читались, сессия должна быть закрыта. Однако такой подход исключает добавление файлов. Мультисессия позволяет связать отдельные сессии и обновленное содержание диска выглядит как один каталог.
- CD-UDF (Universal Disk Format): файловая система-стандарт пошаговой записи пакетов данных.

Процесс записи выбранных вами файлов состоит из двух этапов. Вначале необходимо создать с помощью mkisofs iso-образ, и потом записать его на диск, используя программу cdrecord. Для создания образа воспользуемся следующим синтаксисом:

mkisofs -o test.iso -Jrv -V test_disk /home/usver/test_dir

   -o - имя создаваемого iso-файла (test.iso);
   -J - используем записи Joliet для совместимости с системой Windows;
   -r - Rock Ridge расширение для совсестимости с *nix;
   -v - так называемый verbose-режим;
   -V - указываем имя тома (test_disk);

Для просмотра содержимого можно смонтировать iso-образ:

mount -t iso9660 -o ro,loop=/dev/loop0 test.iso /mnt/iso

Далее нам нужно найти адрес пишещего устройства:

cdrecord -scanbus

И записываем диск:

 cdrecord -v -eject speed=48 dev=0,0,0 test.iso

   -v - verbose-режим. Обозначает тоже, что и в предыдущем случае
   -eject - выдвигает лоток привода после окончания процесса записи
   -speed - указываем скорость записи диска. В нашем случае - 48х
   -dev - записывающее устройство. Числа взяты из вывода программы cdrecord с параметром scanbus
   -multi - создания мультисессийного диска

Для очистки CD-RW необходимо в качестве параметров указать следующее:

  blank=all - очистить весь диск
  blank=disc - то же самое
  blank=fast - быстрая очистка диска
  blank=session - очистить последнюю сессию
  blank=unclose - открыть последнюю записанную сессию

То есть, например команда для быстрой очистки диска будет выглядеть следующим образом:

cdrecord dev=0,0,0 blank=fast -eject -speed=4 -v

Для прямого копирования содержимого с одного диска на другой можно воспользоваться командой вида:

cdrecord -v dev=0,0,0 speed=4 -isosize /dev/scd1

Но для пущей надежности лучше сначала сделать образ диска:

dd if=/dev/scd1 of=/tmp/diskfile.iso

Для того, чтобы добавить еще одну сессию, программе mkisofs необходимо знать номера начального и конечного секторов диска. Узнать это можно следующим образом:

cdrecord dev=0,0,0 -msinfo

В результате, команда для создания iso-образа будет иметь следующий вид:

mkisofs -o test2.iso -Jr -V Session2 -C 0,27139 -M 0,0,0 /path/to/files

Можно так же эту команду объединить с предыдущей. В итоге, получим следующее:

mkisofs -o test2.iso -Jr -V Session2 -C `cdrecord dev=0,0,0 -msinfo` -M 0,0,0 /files/path/

Теперь привод считает информацию о последней записанной сессии и объединит ее содержание с содержанием новой сессии. Предполагается, что последняя сессия записана с опцией -multi