Copiar para a unidade USB modifica o nome do arquivo

1

Eu tenho um script bash que copia dados para um stick USB. Funciona. Os dados são copiados bem, mas os nomes dos arquivos são sempre alterados. Eles são os mesmos que eram antes, mas os nomes mais longos são cortados para apenas 8 caracteres de comprimento e têm uma extensão de apenas 3 caracteres (11 caracteres máximos no total).

Assim, um arquivo original chamado "willGetCutShorter.html" se torna "willGetS.htm" na unidade, enquanto "small.txt" permanece o mesmo. Nomes de diretórios copiados são cortados da mesma maneira, todos aparecendo 8 caracteres (sem extensão, é claro).

Eu não quero que isso aconteça. Eu quero que os nomes de arquivos e diretórios não sejam modificados. Eu não sei porque isso está acontecendo também.

No meu script bash, eu copio tudo no diretório do meu computador para a unidade usando um asterisco para representar todo o conteúdo do diretório do computador. Eu estou querendo saber se é por isso? Talvez cp esteja apenas pegando parte do nome do arquivo?

Além disso, enquanto no Linux os arquivos aparecem todos em letras minúsculas, mesmo coisas que originalmente eram em letras maiúsculas. No entanto, no Windows, todos os arquivos e pastas são maiúsculos.

Por quê?

EDIT # 1

Formatei a unidade USB em uma máquina com Windows 7 antes de começar a usá-la dessa maneira. No meu arquivo /etc/fstab eu adicionei uma entrada para a unidade que monta como msdos. Isso foi porque eu li uma página de manual (provavelmente 'man mount') e ela disse que o formato da unidade, que é FAT32, é coberto por msdos.

Eu queria montá-lo com FAT32 como o tipo de sistema de arquivos, mas não consegui ver essa opção na página de manual de montagem. A entrada fstab significa que o comando mount consiste apenas nisso:

sudo mount /mnt/

Os comandos de cópia no script bash são todos assim:

cp -f -r /path/to/dir/* /mnt/to/dir/

Parece que eu preciso apenas reformatar a unidade para outra coisa ou montá-la de maneira um pouco diferente?

    
por Finley Watson 11.07.2016 / 09:59

2 respostas

9

Suspeito que você esteja usando um comando de montagem como o abaixo:

      mount -t msdos /dev/XYZ /mnt/test

Isso forçará a partição a ser montada no sistema de arquivos legado do DOS FAT, que usa a convenção 8.3 filename (veja link ) em vez de vfat que usa nomes de arquivos longos ( link ).

Recomende o uso de uma das opções abaixo para montagem:

      mount /dev/XYZ /mnt/test     (by default uses vfat, if it is FATXX formatted USB stick)

ou

      mount -t vfat /dev/XYZ /mnt/test  (explicitly mount as vfat, if it is FATXX formatted USB stick)
    
por 11.07.2016 / 10:30
6

É provavelmente o sistema de arquivos no armazenamento usb. O sistema de arquivos FAT pode suportar apenas nomes de arquivos de 8 + 3 caracteres. Este sistema de arquivos é muito antigo. Só é necessário para compatibilidade retroativa com sistemas muito antigos.

O FAT também suporta apenas caracteres maiúsculos. Como esse é apenas um caso, existe uma opção para mapear isso para minúsculas. Isso torna a coisa mais conveniente. Como você não precisa digitar letras maiúsculas e minúsculas, as listagens de diretórios não parecem muito interessantes.

Considere usar FAT32, ntfs, ext4, outra coisa.

    
por 11.07.2016 / 10:10