11.8. Запись многосеансового компакт-диска с данными
Проблема
Требуется постепенно добавлять файлы на диск (в отличие от одноразовой записи). Команда cdrecord закрывает (фиксирует) диск, и добавить на него дополнительные файлы уже не удастся. Как обойти это ограничение?
Решение
Процесс состоит из двух шагов. Обе команды, cdrecord и mkisofs, поддерживают специальные параметры для создания многосеансовых дисков. При первоначальной записи файлов на CD создайте файл .iso обычным способом, а затем включите в командную строку cdrecord ключ -multi:
$ cdrecord -v eject dev=0,1,0 -multi first-image.iso
Затем создайте дополнительные образы .iso при помощи ключей -С и -М:
$ mkisofs -o second-image.iso -J -r -V Session2 -C "$(cdrecord dev=0.1.0 -msinfo)" \
-M 0,1,0 /path-to-new-files
Затем запишите новый файл .iso на диск, снова используя ключ -multi:
$ cdrecord -v -eject dev=0.1.0 -multi second-image.iso
Операцию можно повторять сколько угодно раз. Когда вы доберётесь до последнего сеанса, опустите ключ -multi. Диск необходимо закрыть и зафиксировать, иначе его не сможет прочитать большинство дисководов. Если вы хотите закрыть диск без записи дополнительного сеанса, используйте ключ -fix:
$ cdrecord -v -fix -eject dev=0.1,0
Комментарий
Компакт-диски записываются по сеансам. В каждом сеансе задействовано определённое количество секторов диска. На односеансовом диске присутствует вводная запись, оглавление, данные и выводная запись, которая фиксирует диск и не позволяет записать на него что-либо ещё. Команда mkisofs позволяет связать несколько сеансов на многосеансовом диске. Для этого нужно знать номера начального и конечного секторов каждого сеанса. Рассмотрим параметры команды:
$ mkisofs -o second-image.iso -J -r -V Session2 -C "$(cdrecord dev=0.1.0 -msinfo)" \
-M 0,1,0 /path-to-new-files
-o second-image.iso — имя нового файла .iso (выбирается произвольно);
-J — схема имен Joliet для совместимости с Windows (не обязательно);
-r — схема имен Rock Ridge для совместимости с Unix/Linux, позволяющая открыть доступ к файлам для чтения. Этот параметр обязателен для создания многосеансовых дисков;
-C "$(cdrecord dev=0,1,0 -msinfo)" — указывает mkisofs на конечную точку последнего сеанса и начальную точку следующего сеанса. Обратные кавычки позволяют найти и использовать значения автоматически, их также можно сгенерировать вручную:
$ cdrecord dev=0,1,0 -msinfo
12968,20172
-M 0,1,0 — определяет адрес шины SCSI устройства записи CD;
/path-to-new-files — список файлов (или каталог), включаемых в новый файл .iso.
См. также
cdrecord(1), mkisofs(8).