A gravação no exfat não persiste entre as montagens?

3

Eu ...

  • Comprei um cartão microSD para armazenar música no meu Samsung Galaxy S4.
  • Inseriu no S4 e formatou o cartão (exFat).
  • Instalou o fusível-exfat e exfat-utils e inseriu o cartão em meu computador (Fedora 21, Gnome 3.14); Monta com sucesso.
  • Música copiada para o cartão.
    • Estrutura de diretório: Card / Music / Artist / Album / SongTitle.ogg
  • Arquivos abertos - eles funcionam bem.
  • Desmontar cartão
  • Ejetar cartão
  • Insira o cartão no computador novamente
  • Notou que muitos arquivos e pastas não aparecem mais.

    • Todas as pastas de artistas são exibidas.
    • Algumas pastas de álbuns não aparecem
    • A maioria dos arquivos de músicas não aparece.
    • Parece que, para arquivos e pastas, existe um ponto discreto em que eles desaparecem (isto é, o início das cópias do alfabeto com êxito), embora as pastas cheguem mais longe que os arquivos.
por Julian Delphiki 06.02.2015 / 20:44

1 resposta

1

Você não menciona a desmontagem antes de ejetar o cartão. Se isso não é uma omissão ao escrever a pergunta, existe o seu problema.

Escrever em qualquer tipo de disco é armazenado em buffer : o sistema operacional acumula dados para gravar na memória e os grava em o disco quando julgar conveniente. Os dados não são necessariamente gravados no disco na mesma ordem em que os aplicativos gravaram seus arquivos.

Normalmente, isso é totalmente transparente para aplicativos. Quando um aplicativo lê dados do disco, se os dados ainda estiverem aguardando em um buffer, o aplicativo recupera esses dados.

No entanto, se você ejetar o disco, todos os buffers não gravados serão perdidos. Eles não são recuperados quando você insere o disco de volta porque o sistema operacional não tem como ter certeza de que este é o mesmo disco e que o disco não foi modificado em outra máquina nesse meio tempo. (E, de qualquer maneira, o sistema operacional reutiliza os buffers na memória para outros conteúdos assim que detecta que o disco desapareceu - porque ele não poderia usar o conteúdo do buffer para nada mesmo.)

Antes de ejetar o disco, você precisa dizer ao sistema operacional que não o está usando por mais tempo. Isso é chamado de desmontar (a operação oposta, fazendo com que o sistema comece a usar um sistema de arquivos, é chamado de montagem ). Quando você diz ao sistema para desmontar o sistema de arquivos, ele irá liberar todos os buffers para que os dados no disco estejam atualizados. Ambientes de área de trabalho típicos montam automaticamente o disco assim que você o insere. Você precisa dizer ao seu sistema para desmontar antes de remover o disco: se você remover o disco, é muito tarde para o sistema desmontar. Muitos gerenciadores de arquivos mostram um botão “desmontar” ou “ejetar”; pressione-o e espere o gerenciador de arquivos informar que a operação foi concluída (dependendo da quantidade de dados a serem gravados, pode levar alguns segundos) e, em seguida, você pode ejetar o cartão.

Isso não tem nada a ver com o exfat, a propósito, isso aconteceria com qualquer sistema de arquivos e qualquer mídia.

É possível configurar gravações no cartão para acontecerem automaticamente. Isso não é feito porque pode ser muito mais lento e porque as gravações mais frequentes podem desgastar a mídia flash muito rapidamente (a mídia flash é limitada no número de vezes que um bloco pode ser reescrito e reescrevendo repetidamente um bloco apenas para atualizar uma pequena parte é ineficiente comparando a escrever uma grande quantidade de dados de uma só vez).

    
por 07.02.2015 / 15:57