Como copio um arquivo maior que 4GB para uma unidade flash USB?

40

Estou tentando copiar um arquivo de 6GB para uma unidade flash USB, mas não copia.

    
por VJ Ranga 04.09.2017 / 17:31

6 respostas

95

Isto é devido à limitação do FAT32. Arquivos maiores que 4GB NÃO podem ser armazenados em um volume FAT32. Formatar a unidade flash como exFAT ou NTFS resolverá esse problema.

AVISO: faça backup dos seus dados. A formatação excluirá todos os dados no seu dispositivo.

    
por Russo 04.09.2017 / 17:36
83

Se você não quiser reformatar seu drive USB ou precisar que ele seja FAT32, você pode simplesmente dividir seu arquivo grande em partes. A maioria dos gerentes de arquivamento vem com a opção de divisão e, para a linha de comando, há split , por exemplo, para o seu caso:

split -b4294967295 /path/to/input.file /path/to/pen/drive/output.file.

Veja man split para obter a documentação completa. Isso criará os seguintes arquivos:

4,0G output.file.aa
1,6G output.file.ab

O tamanho do arquivo de output.file.aa corresponde exatamente ao tamanho máximo de arquivo do drive USB formatado em FAT32, que é 4 Gibibyte (GiB, isso não é igual ao Gigabyte GB) menos 1 Byte .
Agradecimentos a Gilles para esta importante adição.

Antes de poder acessar o arquivo novamente, é necessário mesclar suas partes primeiro. Nos sistemas Linux, você pode fazer isso com:

cat output.file.* > input.file

Se você tem medo de que isso possa classificar os arquivos incorretamente, leia No Bash, é garantido que as expansões de curingas estão em ordem?
O comando correspondente nos sistemas Windows é:

copy /b output.file.aa+output.file.ab input.file

Juntamente com muitos outros utilitários úteis do GNU, o split pode ser instalado no Windows também, veja utilitários GNU para o Win32 .

    
por dessert 04.09.2017 / 19:11
34

Problema: o FAT32 tem um limite de 4GiB para o tamanho do arquivo

Diferentes cenários e sistemas de arquivos são examinados à procura de alternativas, levando em consideração

  • o problema do tamanho do arquivo
  • quais sistemas operacionais devem ler / gravar a unidade USB

Apenas para Linux

Se você pretende usar o drive apenas com o Ubuntu (e outras distribuições linux), é uma boa idéia usar um sistema de arquivos linux , por exemplo ext4 . Dessa forma, você pode obter uma velocidade maior de leitura / gravação (dependendo de qual processo é o gargalo) e obterá maior flexibilidade quanto à propriedade e às permissões.

  • Você pode usar o programa da GUI gparted para criar o sistema de arquivos ext4 .

Compatibilidade total com Linux, Windows e MacOS

O Windows tem problemas com sistemas de arquivos Linux, e eu acho que o MacOS tem problemas com sistemas de arquivos Linux e NTFS . Portanto, se você quiser "compatibilidade total" para leitura e gravação, apenas FAT32 , UDF e exFAT permanecerão.

  • FAT32 tem um limite de 4GiB (gibibyte, base 2) para o tamanho do arquivo.

    • Pode ser criado em todos os três sistemas operacionais.
    • Manter (reparar) no Windows, se você tiver acesso ao Windows.
    • Pode ser mantido no Ubuntu com dosfsck , que vem com o pacote dosfstools ,

      sudo apt-get install dosfstools
      
      sudo dosfsck -a /dev/sdxn  # least destructive option
      sudo dosfsck -r /dev/sdxn  # more powerful option
      

      em que x é a letra da unidade e n é o número da partição, por exemplo, /dev/sdb1 para a primeira partição na unidade b.

  • UDF provavelmente não possui ferramentas para reparar o sistema de arquivos,

    • FOSS
    • Talvez seja possível encontrar ferramentas de reparo no Windows através deste link: ferramentas fsck para UDF , e há alguma ferramenta disponível como código-fonte
    • Pode ser criado no Ubuntu
    • Compatível com links no estilo linux.
    • Compatível com permissões de estilo linux. Você pode criar e modificar permissões de arquivos individuais (o que não é possível com FAT e NTFS).
    • Uma partição UDF não será solicitada para formatação pelo Windows 10 (enquanto o sistema de arquivos linux ext4 é afetado e pode ser destruído por engano).
    • Como criar e usar o UDF: Usando o UDF como sucessor do FAT para pen drives USB

      Então, para usá-lo, supondo que seu pendrive seja /dev/sdx :

      1. Instale o pacote udftools

        sudo apt-get install udftools
        
      2. Crie uma tabela de partições e uma partição com gparted ou gnome-disks

      3. Limpe o primeiro mibibyte da partição de destino com o arriscado dd (verifique novamente a linha de comando!)

        sudo dd if=/dev/zero of=/dev/sdx1 bs=1M count=1
        
      4. Executar mkudffs ,

        sudo mkudffs -b 512 --media-type=hd --lvid=my-label /dev/sdx1
        

      Limpe o primeiro mibibyte da partição para apagar as informações anteriores do sistema de arquivos (ou outros dados restantes), para evitar que o stick USB seja detectado como um FAT depois de ter sido formatado com UDF.

      O -b 512 deve forçar um tamanho de bloco do sistema de arquivos igual ao tamanho do bloco físico do pendrive, conforme exigido pela especificação UDF. Adapte-o se tiver a sorte de ter um pendrive com um tamanho de bloco mais adequado.

      Depois disso, o seu pendrive USB poderá ser usado para leitura e gravação com GNU / Linux e outros sistemas operacionais livres, mas também com versões atuais do Windows (somente leitura com a versão desatualizada do XP) e com o MacOS.

  • exFAT é outra opção. É novo em comparação com FAT32 e UDF e afirmou funcionar bem

    • nativamente com o Windows
    • com o MacOS
    • com o Linux

Mais sobre o exFAT

Eu comecei a testar exFAT no Ubuntu. Pretendo editar essa resposta quando tiver mais experiência em usá-la. Vamos começar com os seguintes links ,

e esta linha de comando para instalar o suporte [read / write] para o exFAT no Ubuntu

sudo apt-get install exfat-utils exfat-fuse
  • Pode ser criado no Windows e no MacOS e no Linux com a seguinte linha de comando

    sudo mkfs.exfat -n YOUR-LABEL /dev/sdxi
    

    em que x é a letra da unidade e i é o número da partição, por exemplo, /dev/sdb1 .

  • Pode ser mantido no Windows.

Meus primeiros resultados de testes :

  • A criação do sistema de arquivos exFAT funcionou bem no Ubuntu (16.04 LTS (64 bits), sistema instalado com a série de kernel Xenial (4.4.0-93-generic), atualizado).
  • Escrever e ler um arquivo com mais de 4 GiB foi bem-sucedido. O Ubuntu e o exFAT cooperaram corretamente e rapidamente (eu verifiquei com md5sum e a velocidade foi limitada pelo sistema USB).
  • O Ubuntu e o Windows puderam ler o que foi criado no outro sistema operacional. (Não tenho MacOS para testar e tenho que confiar nos relatórios de outras pessoas.)

Windows

Portanto, se você quiser acesso total de leitura / gravação do Ubuntu e do Windows, sugiro usar NTFS , que possui registro no diário e é muito depurado e polido como o sistema de arquivos [proprietário] do Windows . (Também é possível usar exFAT .)

  • No Ubuntu, você pode usar o programa da GUI gparted para criar um sistema de arquivos NTFS.
  • No Windows, é fácil criar sistemas de arquivos NTFS e exFAT (eles são nativos).

MacOS

No MacOS, é possível usar FAT32 , UDF e exFAT .

Você também pode usar ext4 com uma solução alternativa, o Ubuntu Server com um servidor SSH em uma máquina virtual . (Acho que a mesma solução funcionaria também com o Windows.) Isso pode valer a pena quando você pretende acessar muitos arquivos através da unidade e de seu sistema de arquivos, mas provavelmente não com um pequeno pendrive USB2.

Veja este link

Usando ext4 no OS X Yosemite, a maneira longa mas segura

    
por sudodus 04.09.2017 / 19:01
11

Tendo tido um problema semelhante e sem vontade de reformatar o pendrive, usei apenas um arquivador. Mais ou menos todas as GUIs modernas (como File Roller, 7Zip, etc.) ou CLIs permitem dividir o arquivo. Defina o limite de divisão abaixo do limite de FAT (que um pouco de 4 GB), para velocidade, você pode escolher uma taxa de compactação baixa, até mesmo "armazenar", ou seja, não comprimir nada, uma voila!

    
por Oleg Lobachev 04.09.2017 / 19:30
5

Se você tiver acesso a uma máquina Windows, poderá converter seu sistema de arquivos USB-stick sem formatação. Você deve usar a linha de comando do Windows da seguinte maneira: pressione Win + R , tipo cmd - & gt; OK , na janela de abertura digite o comando convert X: /FS:ntfs onde X: é a letra do pendrive montado. Em menos de um minuto está pronto. Aproveite.

    
por M. Dm. 05.09.2017 / 09:11
2

Reformatar ou usar split são ótimas opções, ou você pode tentar usar o zip para compactar o arquivo, apenas saiba que alguns arquivos já estão compactados, então compactá-los irá torná-los maiores. (Você também pode perder a propriedade de arquivos, timestamps, etc.)

    
por Jebidieah Cornell 06.09.2017 / 20:50