Запись файлов, размером 4Gb и более, на DVD

Источник: http://www.opennet.ru/tips/info/1380.shtml
Также спасибо : http://pomka.blogspot.com/


ISO9660 не позволяет писать файлы 4Gb и более. Потому про mkisofs можно забыть.
Будем использовать файловая система UDF. Замечательно читается в более-менее последних версиях Windows.
(Добавлено из комментов (Я тут поинтересовался...http://en.wikipedia.org/wiki/ISO_9660 По умолчанию, ISO9600 не позволяет писать файлы более 2Gb. MS Windows XP позволяет писать файлы какого угодно размера, но принцип таков, что она разбивает файл на куски по 2Gb и хитро размещает их на диске. В результате такие файлы может прочитать только Windows XP и никто больше. Вобщем как обычно M$ о совместимости не заботится. Если б мне не нужна была совместимость, я бы писал файлы на какую-нибудь ext3 и не мучался (кстати, Nero такого и не снилось - писать на диск ЛЮБУЮ файловую систему ). А вот про гибридную FS можно почитать здесь: http://en.wikipedia.org/wiki/Hybrid_CD А еще вот здесь есть замечательная (я бы сказал золотая) табличка: http://en.wikipedia.org/wiki/Comparison_of_file_systems Из всего следует, что гибридная FS также не позволяет писать фалы более 2Gb. Но она вносит ограничение на длину имени файла в 31 символ (и подозреваю, без поддержки UTF-8), что для меня недопустимо.)
Для этого нам нужны udftools: http://sourceforge.net/projects/linux-udf/

Алгоритм таков: создаем образ на жестком диске, копируем туда файл, записываем образ на DVD.

Берем размер образа (в секторах) по следующей таблице:
DVD-R/DL = 4,171,712
DVD+R/DL = 4,173,824
DVD-R/SL = 2,298,496
DVD+R/SL = 2,295,104
Размер сектора 2048 байт
Возмем DVD+R/single layer для примера.

Делаем образ:
$ dd if=/dev/zero of=/mnt/data/image.udf bs=2048 count=2295104

Создаем файловую систему:
mkudffs --lvid=Volume\ name /mnt/data/image.udf

Монтируем образ:
sudo mount -o loop /mnt/data/image.udf /mnt/dvdimage

Аналогичная запись в fstab:
/mnt/data/image.udf /mnt/dvdimage udf noauto,rw,users,loop=/dev/loop0 0 0

Копируем файлы. Размонтируем образ.

Записываем образ на диск:

growisofs -dvd-compat -Z /dev/dvd=/mnt/data/image.udf

Примечания:
- Если не ошибаюсь, опиция -dvd-compat нужна только на DVD-R и не нужна на DVD+R.
Но проблем замечено не было, даже когда писалось с -dvd-compat на DVD+R.

- Образ замечательно пишется каким-нибудь k3b, вот только проверить его неудастся (поскольку это не ISO 9660)

- UDF поддерживает пользователей, права, хардлинки, и по-моему симлинки.
Так что можно использовать для бекапа. Вот только в Windows XP такие вещи интересно читаются:
хардлинки - просто файл копируется, а симлинки - создается файл нулевой длины

- в Линуксе работа с udf (например просмотр директорий) происходит чуть медленнее,
с ISO9660, особенно если там хардлинки и симлинки.

- САМОЕ ВАЖНОЕ: В ядрах 2.6.17 и выше, вы не сможете записать на UDF файл более 1Gb.
Поддержку больших файлов из UDF убрали мотивируя тем, что драйвер как-то портит что-то в памяти в ядре.
Лично я глюков не заметил. Хоть у меня стоит 2.6.20, я держу 2.6.16.19 именно для того,
чтобы записывать большие файлы. Поскольку каждый раз перегружаться неудобно,
смотрю в сторону lguest http://www.opennet.ru/opennews/art.shtml?num=9698 http://lwn.net/Articles/218766/

- используя UDF вы можете писать на DVD как на обычную дискету. См сюда: http://www.opennet.ru/base/sys/udf_cdrom.txt.html . Сам пробовал - получалось :)

Примечание: вообще IMHO замечательная файловая система. И почему разработку udftools прекратили?
Может найдется кто-то из глубокоуважаемого Linux- общества, который продолжит благородное дело?