Почему Windows и Linux видят разные файлы на DVD-диске?

80

У меня есть DVD-ROM с некоторыми учебными материалами (DVD-диск преподавателя английского языка от Headway Beginner). Когда я смотрю на DVD с компьютера с Ubuntu, я вижу один набор файлов (который, setup-linuxпомимо прочего, включает в себя файл, хотя он не работает).

Когда я просматриваю тот же DVD-диск с компьютера с Windows, я вижу другой набор файлов, включая setup-windows.exeфайл.

Ни одна машина не видит все файлы, но есть некоторые общие для обоих.

Мои вопросы:

  1. Как это работает?
  2. Как я могу увидеть все файлы при использовании Ubuntu?

Редактировать: это происходит не из-за того, что файлы «скрыты» при просмотре в файловом менеджере, вещи более низкого уровня, такие как «ls -a», не показывают отсутствующие файлы.

Редактировать 2: я использую Ubuntu 18.04 LTS

spookylukey
источник
Вы не сказали, какую версию Ubuntu вы используете, но в nautilus(или «Файлах» файловом менеджере для gnome), если вы переходите в режим просмотра значков и нажимаете на меню, вы можете нажать «Показать скрытые файлы», и вы должны увидеть все файлы. Если в режиме подробностей (или списка) опция несколько скрыта (в моем окне 19.04; извините, я обычно не использую nautilus). Windows по умолчанию использует флаг fs (файловая система), чтобы скрыть файлы, где * nix (Ubuntu, любой GNU / Linux, apple или unix) использует «.» в качестве первого символа имени файла, чтобы сделать файл «скрытым».
Guiverc
2
Это не вещь скрытых файлов - использование ls -aв Linux не показывает отсутствующие файлы. И также не показывает «Показать скрытые файлы» в проводнике Windows.
Spookylukey

Ответы:

112

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

Это может быть потому, что MS-Windows и Unix используют разные файловые системы на DVD - даже на одном и том же DVD. Файлы на оптическом носителе обычно располагаются с использованием протокола файловой системы, указанного в стандарте ISO 9660 (см. Также примечания в конце).

Но стандарт допускает расширения, и Microsoft разработала собственное расширение к стандарту под названием « Joliet », которое позволяет совместимым с Microsoft Windows операционным системам читать разные имена файлов с большим количеством функций (более длинные имена и поддержка Unicode), чем стандартная файловая система ISO 9660. позволяет.

Для операционных систем в стиле Unix (таких как Linux) было разработано еще одно расширение, называемое « Rock Ridge », чтобы обеспечить еще более длинные имена файлов, разрешения в стиле Unix и некоторые другие вещи.

Распространенные расширения Rock Ridge и Joliet на одном оптическом носителе очень распространены, но может случиться так, что создатель этого DVD использовал эти расширения разумным способом, чтобы файлы, относящиеся к MS-Windows, отображались только в части Joliet. система и только специфичные для Linux файлы отображаются в части системы Rock Ridge. isoinfoПрограмма обсуждается в этом stackexchange ответ может дать больше информации.

Примечания:

Как упомянуто в обсуждении в комментариях, в то время как многие носители все еще создаются в ISO 9660 и его расширениях, где могут встречаться приемы, описанные в OP, ISO 9660 устарел, и современные носители должны создаваться с использованием UDF (ISO 13346 ), который является универсальным форматом диска и допускает только одно представление всей файловой системы, поэтому такие приемы, вероятно, будут невозможны на диске, созданном UDF.

Guss
источник
27
Спасибо, этого было достаточно - isoinfo dev=/dev/dvd -J -lsпоказывает недостающие файлы в Linux.
Spookylukey
25
Довольно хороший ответ, но одна важная деталь, которую я вижу, отсутствует - это опции --norockи --nojolietmount, которые вы можете использовать в Linux, чтобы решить, какой из трех макетов дерева вы хотите увидеть.
Касперд
8
Вау, это ... на самом деле удивительно элегантно.
Легкость гонки с Моникой
4
Некоторые инструменты, такие как mkisofsфактически, позволяют вам указать, как их генерировать. Раздел «Примеры» на связанной странице руководства показывает, как вы можете создать ISO-файл с именем файла README, но он будет отображаться с различным содержанием в зависимости от того, какую систему вы используете для просмотра компакт-диска. Процитирую man-страницу: «Вероятно, возможны всевозможные странные результаты с комбинациями опций скрытия ...»
Herohtar
3
Я рад, что в комментариях есть упоминание UDF, но я не уверен, что это имеет отношение к обсуждению - если файловая система на DVD OP была универсальным форматом, то вы не сможете получить другие представления в Windows и Linux, насколько я понимаю.
Гусс
0

Весьма вероятно, что таблицы «rockridge» (unix) и «joliet» (microsoft) по-разному отображают имена файлов iso9660. Они оба включают в себя «отображение» в каждом каталоге, которое в основном говорит, какие фактические ISO-файлы (8 + точка + 3 символа) следует рассматривать как какое более длинное имя. Таким образом, каждый файл на самом деле имеет 2 имени, одно из которых ограничено 8 + 3 символами, а другое - нет.

В Rockridge это отображение представляет собой фактический файл, который добавляется в каждый каталог, iirc с именем «TRANS.TBL» или что-то в этом роде. На joliet это очень уродливый и глупый хак, когда «запись в каталоге» не является реальным файлом, но зарезервирована для этой цели.

DELT
источник
О, я забыл добавить: windows поддерживает только joliet (что неудивительно), в то время как linux поддерживает и то, и другое (что тоже не удивительно), хотя в linux и большинстве других систем Unix Rockridge имеет приоритет по умолчанию. Однако есть варианты монтирования для отключения одного или другого, или обоих. Если вы отключите и то, и другое, вы увидите только короткие имена файлов 8.3, как это было бы для ex. в DOS или в Windows 3.x и ранее. В зависимости от того, какой файловый менеджер и окружение рабочего стола вы используете, может быть «удобный» способ сделать это без ввода команд :)
delt