Mon père m'a laissé un lot de disquettes 3,5 pouces créées avec Windows 95 (néerlandais). Je veux copier leur contenu. Mon seul ordinateur avec un lecteur de disquette tourne sous Ubuntu 12.04.5 LTS.
Après avoir installé le paquet udisks
,
udisks --mount /dev/fd0
monte le contenu sur /media/floppy0
.
Cela convient pour les fichiers avec des noms de fichiers DOS standard (8.3), mais cela ne va pas du tout quand il y a autre chose:
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?.├╛?
(Il n'y a pas que les noms de fichiers insensés: rsync
le contenu de cette disquette m'a donné un fichier de 5 Go, et à ce moment-là, je n'ai plus assez d'espace disque.)
Mon hypothèse: la traduction du nom de chemin VFAT est tentée incorrectement ou pas du tout.
Comment rectifier cela?
Les pages trouvées avec Google, telles que celui-ci , suggèrent que vous devez fournir les valeurs appropriées pour les options de montage iocharset
et codepage
.
Est-ce vrai? Quelles valeurs utiliser? Et tout d’abord: comment les fournir?
udisks
ignore silencieusement les options de montage fournies:
$ 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
(Ce n'est pas ce que j'ai dit!)
Un échec direct mount
échoue silencieusement:
$ Sudo mount -t vfat /dev/fd0 /mnt
mount: block device /dev/fd0 is write-protected, mounting read-only
$ fgrep fd0 /proc/mounts
(ne retourne rien; la monture ne fonctionne tout simplement pas).
Au moins de cette façon, je peux vérifier quelles codepage
s sont valides:
$ 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
mais ce dont j'ai besoin, c'est un moyen de réellement mount
avec une telle page de codes.
Qu'est-ce qui ne va pas? Que puis-je essayer?
Un stockage long peut avoir affecté ces disquettes et leur FAT pourrait être cassé. Ceci est hautement possible, car même une disquette fraîchement écrite ne saurait être considérée comme un support fiable. J'ai souvent fait 2 copies des mêmes données quand des disquettes étaient utilisées il y a plusieurs années.
Il y a un bon wiki expliquant l'utilisation des options codepage
et iocharset
de la commande mount
pour le système de fichiers FAT.
La prise en charge directe des disquettes dans les systèmes plus récents n’est pas fiable. Même en 12.04, leur support était en proie à de multiples bugs. L'un d'eux , par exemple.
L'argument de commande mount
-t
spécifie le type de système de fichiers. Votre utilisation est proche, mais vous avez besoin d'un espace entre le -t
et le type de système de fichiers. Changez votre commande de:
$ Sudo mount -tvfat /dev/fd0 /mnt
à:
$ Sudo mount -t vfat /dev/fd0 /mnt
Désolé, je n'ai pas accès à mes machines avec des lecteurs floopy pour montrer à quoi ressemble la sortie dans la vie réelle.
Si vous additionnez les tailles de fichier de chaque fichier de votre exemple comportant des noms de fichier légitimes et des dates de création, le total est de 328 058. Il s’agit des résultats qu’on pourrait s’attendre à trouver sur une disquette de cette capacité (1 Mo).
De toute évidence, vous ne trouverez pas un fichier de 5 Go ou un fichier créé en 1959 ou 2038 dans un périphérique de stockage vieux de près de 30 ans.
Si votre problème est de récupérer des fichiers légitimes à partir de ces anciennes disquettes, cela semble possible maintenant en copiant simplement les fichiers avec des noms, des tailles de fichier et des dates raisonnables.
Je n'ai aucun matériel pour tester quoi que ce soit aussi ancien et vous ne pouvez que supposer que les disques Udisks prennent en charge ces disques anciens. Je suppose que peut-être pas. Ou du moins pas sans faille.
Il existe peut-être une méthode pour bricoler un schéma de montage qui lira correctement la structure de fichiers sur ces périphériques, mais cela semble demander beaucoup de travail si tout ce que vous voulez, c'est restaurer les fichiers.
Sudo mount /dev/fd0 /floppy -t vfat
"devrait" travailler ...
Win95 était il y a bien longtemps et je ne pense pas que NTFS était là à l'époque. Mais bien sûr, une possibilité [bien que distante] est que la disquette ne soit pas formatée en tant que périphérique FAT.
Ensuite, il y a toujours le problème de compatibilité du contrôleur natif IDE par rapport à une interface USB et si ce dernier (que je suppose que vous utilisez) communique fidèlement avec le matériel et le support du lecteur.