Как получить правильный перевод пути vfat для моих дискет?
Мой отец оставил мне партию 3,5-дюймовых "дискет", созданных с помощью Windows 95 (голландский). Я хочу скопировать их содержимое. Мой единственный компьютер с флоппи-дисководом работает под управлением Ubuntu 12.04.5 LTS.
После установки udisks
пакет,
udisks --mount /dev/fd0
монтирует содержимое на /media/floppy0
,
Это хорошо для файлов со стандартными (8.3) именами DOS-файлов, но все идет не так, как надо:
ls -l /media/floppy0 /bin/ls: cannot access /media/floppy0/vï▐ffφl.: Input/output error /bin/ls: cannot access /media/floppy0/$Θh²çⁿ.tΘ: Input/output error /bin/ls: cannot access /media/floppy0/ëG╟+.|√═: Input/output error /bin/ls: cannot access /media/floppy0/t╛n}φa.2σ═: Input/output error total 13395579
-r-xr-xr-x 1 rp root 1476370920 Dec 25 1959 ╣?.???
-rwxr-xr-x 1 rp root 641204006 Jan 30 1980 └≤½Θ- ps.QR3
-r-xr-xr-x 1 rp root 1346403387 Dec 19 1905 6?|■└ó<|.í7|
-rwxr-xr-x 1 rp root 48514 Jan 1 1980 BL.WDB
-rwxr-xr-x 1 rp root 3728 Aug 25 2000 CADRE.WP
-rwxr-xr-x 1 rp root 2857697280 Dec 31 1979 COM d????????? ? ? ? ? ? ??ëG?╟?+.|√═
-rwxr-xr-x 1 rp root 2294480508 Dec 11 1966 ï?=|Ω
-rwxr-xr-x 1 rp root 152428 Dec 23 1991 KAART2.WKS
-rwxr-xr-x 1 rp root 12909 Jan 1 1980 KABRO.WKS
-rwxr-xr-x 1 rp root 8554 Nov 28 1991 K.BRO drwxr-xr-x 2 rp root 1024 Nov 28 1991 KOPIE
-rwxr-xr-x 1 rp root 47250 Nov 28 1991 L39.ZND
-rwxr-xr-x 1 rp root 0 Dec 19 1991 LIJST39.WEK d????????? ? ? ? ? ? t?╛n}φa.2σ═
-r-xr-xr-x 1 rp root 1963196670 Jan 6 2038 ├┬?.ⁿ?u d????????? ? ? ? ? ? vï▐ffφl?.???
-rwxr-xr-x 1 rp root 21774 Dec 31 1979 WIELEK.WDB
-rwxr-xr-x 1 rp root 22612 Dec 31 1979 WIELGA.WDB
-rwxr-xr-x 1 rp root 23255 Dec 22 1991 WIEL.WBL
-rwxr-xr-x 1 rp root 27044 Jan 1 1980 WIEL.WDB
-rwxr-xr-x 1 rp root 0 Jan 8 1980 δ4ÉIBM.3.2 d????????? ? ? ? ? ? $?Θh²çⁿ?.t?Θ
-rwxr-xr-x 1 rp root 3137341625 Nov 26 1907 Θ╨■φ? s?.├╛?
(Это не просто бессмысленные имена файлов: rsync
Содержимое этой дискеты дало мне файл объемом 5 ГБ, после чего у меня закончилось место на диске.)
Мое предположение: VFAT перевод пути выполняется неправильно или не выполняется вообще.
Как это исправить?
Страницы, которые я нашел в Google, такие как эта, предполагают, что вопрос заключается в предоставлении соответствующих значений для iocharset
а также codepage
варианты монтирования.
Это правда? Какие значения использовать? И, прежде всего: как их снабдить?
udisks
молча игнорирует любые опции монтирования:
$ udisks --mount /dev/fd0 --mount-options='ro,iocharset=utf8,codepage=1252,foo=bar'
Mounted /org/freedesktop/UDisks/devices/fd0 at /media/floppy0
$ fgrep fd0 /proc/mounts
/dev/fd0 /media/floppy0 vfat ro,nosuid,nodev,relatime,uid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
(Это не то, что я сказал!)
Прямой mount
молча терпит неудачу
$ sudo mount -t vfat /dev/fd0 /mnt
mount: block device /dev/fd0 is write-protected, mounting read-only
$ fgrep fd0 /proc/mounts
(ничего не возвращает; монтирование просто не работает).
По крайней мере, так я могу проверить, какие codepage
s действительны:
$ sudo mount -t vfat -oro,codepage=850 /dev/fd0 /mnt
$ fgrep fd0 /proc/mounts
$ sudo mount -t vfat -oro,codepage=85 /dev/fd0 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/fd0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or s
но мне нужен способ на самом деле mount
с такой кодовой страницей.
Что случилось? Что еще я могу попробовать?
3 ответа
Длительное хранение могло повлиять на эти дискеты, и их FAT мог быть поврежден. Это очень возможно, потому что даже недавно написанная дискета не может считаться надежным носителем. Я часто делал 2 копии одних и тех же данных, когда использовал дискеты много лет назад.
Есть хорошая вики, объясняющая использование codepage
а также iocharset
варианты mount
команда для файловой системы FAT.
Прямая поддержка дискет в новых системах не является надежной. Даже в 12.04 их поддержка страдала от множества ошибок. Один из них, например.
mount
командный аргумент -t
указывает тип файловой системы. Вы близки в использовании, но вам нужно пространство между -t
и тип файловой системы. Измените свою команду с:
$ sudo mount -tvfat /dev/fd0 /mnt
чтобы:
$ sudo mount -t vfat /dev/fd0 /mnt
Извините, у меня нет доступа к моим машинам с флоппи-приводами, чтобы показать, как выглядит реальный результат.
Если вы добавите размеры файлов каждого файла в вашем примере, которые имеют допустимые имена файлов и даты создания, общее количество составляет 328 058. Речь идет о результатах, которые можно ожидать на дискете с такой емкостью (1 МБ).
Очевидно, что вы не найдете файл объемом 5 ГБ или файл, созданный в 1959 или 2038 году, на устройстве хранения данных, которому почти 30 лет.
Если ваша проблема состоит в том, чтобы восстановить легитимные файлы с этих старых дискет, это кажется возможным сейчас, просто скопировав файлы с разумными именами, размерами файлов и датами.
У меня нет оборудования для тестирования чего-либо такого старого, и вы можете только предполагать, что udisks поддерживает эти древние диски. Наверное, нет. Или, по крайней мере, не безупречно.
Может существовать метод для объединения схемы монтирования, который будет правильно считывать файловую структуру на этих устройствах, но это кажется большой работой, если все, что вы хотите сделать, это восстановить файлы.
sudo mount /dev/fd0 /floppy -t vfat
"должен" работать....
Win95 был давным-давно, и я не думаю, что NTFS была тогда. Но, конечно, одна [хотя и удаленная] возможность заключается в том, что дискета не отформатирована как устройство FAT.
Кроме того, всегда существует проблема совместимости встроенного контроллера IDE с интерфейсом USB, а также с тем, насколько точно (как я предполагаю, вы используете) последний поддерживает связь с оборудованием и носителями диска.