Meu pai me deixou um lote de disquetes "disquetes" de 3,5 polegadas criados com o Windows 95 (holandês). Eu quero copiar seu conteúdo. Meu único computador com uma unidade de disquete roda o Ubuntu 12.04.5 LTS.
Depois de instalar o udisks
pacote,
udisks --mount /dev/fd0
monta o conteúdo em /media/floppy0
.
Isso é bom para arquivos com nomes de arquivo DOS padrão (8.3), mas dá terrivelmente errado quando qualquer outra coisa está presente:
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?.├╛?
(Não são apenas os nomes de arquivos sem sentido: rsync
gravar o conteúdo deste disquete me deu um arquivo de 5 GB, ponto em que fiquei sem espaço em disco.)
Meu palpite: a tradução do nome do caminho VFAT foi tentada incorretamente ou não foi feita.
Como corrigir isso?
As páginas que encontrei com o Google, como esta , sugerem que é uma questão de fornecer valores apropriados para as opções iocharset
e codepage
mount .
Isso é verdade? Quais valores usar? E, antes de tudo: como abastecê-los?
udisks
ignora silenciosamente qualquer opção de montagem fornecida:
$ 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
(não foi isso que eu disse!)
Um direto mount
falha silenciosamente:
$ sudo mount -t vfat /dev/fd0 /mnt
mount: block device /dev/fd0 is write-protected, mounting read-only
$ fgrep fd0 /proc/mounts
(não retorna nada; a montagem simplesmente não funciona).
Pelo menos assim posso verificar quais codepage
s são válidos:
$ 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
mas o que eu preciso é uma maneira de realmente mount
usar essa página de código.
O que está errado? O que mais posso tentar?
O armazenamento prolongado pode ter afetado esses disquetes e seu FAT pode ser quebrado. Isso é altamente possível, porque mesmo um disquete recém-gravado não pode ser considerado uma mídia confiável. Muitas vezes fiz 2 cópias dos mesmos dados quando usei disquetes muitos anos atrás.
Existe um bom wiki explicando o uso
codepage
eiocharset
as opções domount
comando para o sistema de arquivos FAT.O suporte direto de disquetes em sistemas mais novos não é confiável. Mesmo em 12.04, seu suporte estava repleto de vários bugs. Um deles , por exemplo.
O
mount
argumento de comando-t
especifica o tipo de sistema de arquivos. Você está próximo em seu uso, mas precisa de um espaço entre-t
e o tipo de sistema de arquivos. Altere seu comando de:para:
Desculpe, não tenho acesso às minhas máquinas com unidades de disquete para mostrar como é a saída da vida real.
Se você somar os tamanhos de arquivo de cada arquivo em seu exemplo que tenham nomes de arquivo legítimos e datas de criação, o total será 328.058. Isto é sobre os resultados que se pode esperar encontrar em um disquete dessa capacidade (1MB).
Claramente, você não encontrará um arquivo de 5 GB ou um arquivo criado em 1959 ou 2038 em um dispositivo de armazenamento de quase 30 anos.
Se o seu problema é recuperar arquivos legítimos desses disquetes antigos, isso parece possível agora apenas copiando os arquivos com nomes, tamanhos e datas razoáveis.
Não tenho hardware para testar nada tão antigo e você só pode supor que o udisks suporta essas unidades antigas. Acho que talvez não. Ou pelo menos não perfeitamente.
Pode haver um método para remendar um esquema de montagem que irá ler corretamente a estrutura do arquivo nesses dispositivos, mas isso parece muito trabalhoso se tudo o que você deseja fazer é recuperar os arquivos.
"deveria" funcionar....
O Win95 foi há muito tempo e não acho que o NTFS existisse naquela época. Mas é claro que uma possibilidade [embora remota] é que o disquete não esteja formatado como um dispositivo FAT.
Depois, há sempre o problema de compatibilidade do controlador IDE nativo versus uma interface USB e se o último (que suponho que você esteja usando) se comunica fielmente com o hardware e a mídia da unidade.