Запись произвольных данных на DVD в Linux

awk '/patterna/ || /patternb/ { print > "patternapatternb.txt" }
     /patternc/ || /patternd/ { print > "patterncpatternd.txt" }
     # ... more rules following same scheme; replace with real patterns ...
     /patterny/ || /patternz/ { print > "patternypatternz.txt" }' inputfile

Поместите код в файл script.awk и вызовите с помощью awk -f script.awk inputfile . Или же создайте многострочную командную строку, как указано выше. В оболочке GNU Bash новую строку можно вставить с помощью Ctrl-V Ctrl-J *

. Есть только один цикл (неявный цикл обработки записи, выполняемый awk ). Требуется только один проход через файл.


* Вы можете использовать Enter, чтобы добавить новую строку между кавычками, только если добавляете новые символы в конце строки и открытая кавычка является невыполненной.

3
20.04.2017, 12:12
1 ответ

Краткое введение в форматы CD:

CD-R может записывать несколько сессий. Каждая сессия должна быть завершена и "закрыта", прежде чем ее можно будет прочитать. Каждая сессия содержит ввод, вывод и некоторое количество дорожек. Вы можете записать все дорожки в одной сессии (диск сразу, опция -dao) или каждую дорожку по очереди из разных файлов (концептуально) с паузами между ними (дорожка сразу, опция -tao), но вы должны записать все дорожки и закрыть сессию.

Формат данных для компакт-дисков (CD-ROM, "желтая книга") был разработан поверх аудиоформата (CD-DA, "красная книга") и правильно разделяет непрерывный цифровой аудиопоток на сектора. Для этого ему необходима заголовочная информация, поэтому в аудио "секторе" 2352 байта, а для данных только 2336 байт. Кроме того, коррекция ошибок на аудио компакт-дисках достаточно хороша для аудио, где можно допустить несколько ошибочных битов, но недостаточно хороша для данных. Поэтому каждый сектор получает дополнительные биты коррекции ошибок, оставляя 2048 байт пользовательских данных. Это также называется "Режим 1". Он используется по умолчанию в cdrecord, и я не рекомендую использовать какой-либо другой режим для записи данных. Доступные "сырые" режимы позволяют записывать подканальные данные, но вам это не нужно.

Однако, вам потребуется перед записью разбить дорожки на блоки соответствующего размера. И нет, 4512 байт не кратно 2048 байт. Так что для резервного копирования, что-то вроде

tar -c --record-size=2048 -f track.tar

и затем что-то вроде

cdrecord -multi dev=0,0,0 -data track.tar

для создания многосеансового CD с одной дорожкой. Если CD не заполнен, можно добавить еще одну сессию.

У DVD другой формат, другие размеры блоков и другие ограничения, и я лично еще не пробовал это на DVD, так что я не хотел бы пытаться дать подробности, но в принципе это работает аналогично.

Edit:

Если целью является частое создание резервных копий на DVD+RW или DVD-RW (+ или - имеет значение, это разные форматы), вы можете терпеть сбои, поэтому вы можете попробовать потоковую передачу с tar. Вам также, вероятно, не нужно несколько сессий.

Вы также можете передавать поток с mkisofs, что даже лучше, потому что не будет проблем с монтированием, а в man cdrecord есть пример:

mkisofs -R /master/tree | cdrecord -v -dao fs=6m speed=2 dev=2,0 -

Последние - предназначены для "чтения данных из stdin". Вы можете захотеть изменить скорость, размер FIFO, приоритеты ввода/вывода (это еще одна банка червей), driveropts=burnfree, если поддерживается, и т.д.

Для постоянного резервного копирования на носители с возможностью записи, я бы всегда рекомендовал делать это безопасным способом, без потоковой передачи.

4
27.01.2020, 21:21

Теги

Похожие вопросы