如何为我的软盘获得正确的 vfat 路径转换?

Rei*_*ost 5 mount udisks fat32 floppy filename

我父亲给我留下了一批用 Windows 95(荷兰语)制作的3.5 英寸“软盘”。我想复制他们的内容。我唯一带有软盘驱动器的计算机运行 Ubuntu 12.04.5 LTS。

安装udisks包后,

udisks --mount /dev/fd0
Run Code Online (Sandbox Code Playgroud)

将内容装入/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?.???
Run Code Online (Sandbox Code Playgroud)

(不仅仅是无意义的文件名:rsync输入这张软盘的内容给了我一个 5GB 的文件,此时我的磁盘空间不足。)

我的猜测:VFAT 路径名转换尝试不正确或根本没有尝试。

如何纠正这个问题?

我在 Google 上找到的页面,例如this,表明这是为theiocharsetcodepagemount options提供适当值的问题。

这是真的?要使用哪些值?而且,首先:如何供应它们?

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
Run Code Online (Sandbox Code Playgroud)

(这不是我说的!)

直接mount静默失败:

$ sudo mount -t vfat /dev/fd0 /mnt
mount: block device /dev/fd0 is write-protected, mounting read-only
$ fgrep fd0 /proc/mounts
Run Code Online (Sandbox Code Playgroud)

(什么都不返回;安装只是不起作用)。

至少这样我可以检查哪些codepage是有效的:

$ 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
Run Code Online (Sandbox Code Playgroud)

但我需要的是一种实际mount使用这样的代码页的方法。

怎么了?我还能尝试什么?

wht*_*ger 1

长时间存储可能会影响这些软盘,并且它们的 FAT 可能会被破坏。这是很有可能的,因为即使是新写入的软盘也不能被认为是可靠的介质。许多年前,我在使用软盘时经常制作相同数据的两份副本。
有一个很好的wiki解释了FAT 文件系统命令的用法codepageiocharset选项。 在较新的系统中对软盘的直接支持并不可靠。即使在 12.04 中,他们的支持也受到多个错误的困扰。例如,其中之一。mount