Skip to content
NTFS2exFAT

Como o NTFS2exFAT funciona

Cinco fases, e a recusa de pular qualquer uma delas. Esta página explica o que acontece com seus dados em cada etapa e quais verificações separam você de um erro.

As cinco fases

1. Verificar o disco (somente leitura)

O app examina o disco sem alterar nada. Ele conta arquivos e pastas, sinaliza nomes que o exFAT não permite, ignora pastas de sistema como System Volume Information e $RECYCLE.BIN e compara o espaço usado informado pelo disco com os arquivos que o macOS realmente consegue ver. Uma grande diferença é um aviso de que alguns dados podem estar invisíveis para o macOS.

  • Nada é gravado no disco
  • Itens ilegíveis são listados, não ignorados em silêncio
  • Você vê de quanto espaço de backup precisa

2. Backup com checksums

Os arquivos são copiados para uma pasta que você escolhe. Enquanto cada arquivo é copiado, seu SHA-256 é calculado. O progresso é guardado em um manifesto somente de acréscimo, para que você possa pausar, fechar o app e retomar.

  • O backup não pode estar no disco que será apagado
  • Os caminhos do backup evitam colisões em volumes que não diferenciam maiúsculas de minúsculas
  • Os arquivos são gravados com um nome temporário e só renomeados quando completos

3. Verificar o backup

Cada arquivo do backup é lido de volta do disco, ignorando o cache, e seu checksum é comparado com o calculado a partir do original. Um único byte alterado reprova na verificação.

  • As leituras vêm do disco, não da memória
  • Qualquer falha interrompe o processo antes da etapa de formatação

4. Apagamento protegido

A etapa de formatação só fica disponível quando todas estas condições são verdadeiras: o backup está totalmente verificado, os arquivos do backup ainda existem com os tamanhos corretos, o disco ainda tem o mesmo volume, a mesma identidade de disco e o mesmo tamanho, o backup não está nesse disco e você digitou o nome exato do disco. O app registra que está prestes a apagar antes de tocar no disco, para que uma interrupção possa ser reconhecida depois.

  • Só discos externos são oferecidos
  • O comando de formatação atua exatamente no volume que passou pelo backup
  • Se a formatação exigir permissão, o macOS pede a você

5. Copiar de volta e verificar

Tudo é copiado para o novo volume exFAT e lido de novo para comparar os checksums. Nomes que o exFAT não permite são renomeados e listados. Um relatório final é salvo ao lado do backup.

  • Um arquivo de backup corrompido nunca é copiado para o novo disco
  • O backup é mantido até você apagá-lo

O que “verificado” significa aqui

Um arquivo conta como verificado quando seu conteúdo, lido de volta do disco depois de gravado, produz o mesmo SHA-256 do original. O app não se baseia apenas em tamanho ou data do arquivo. A única exceção são os arquivos de metadados do macOS chamados ._*: depois de copiados para o exFAT, o macOS os incorpora aos atributos estendidos, então só é possível confirmar que foram gravados, não relê-los.

Nomes de arquivo e metadados

O exFAT não permite os caracteres " * : < > ? \ |, caracteres de controle nem nomes terminados em espaço ou ponto. Esses nomes são substituídos e listados no relatório. Nomes que diferem apenas por maiúsculas e minúsculas são tornados únicos. As datas de modificação de arquivos e pastas são preservadas.

O limite honesto

O leitor de NTFS integrado do macOS pode ocultar ou renomear arquivos cujos nomes o Windows não permite. O NTFS2exFAT trabalha com o que o macOS mostra a ele. Ele avisa quando o espaço usado do disco é muito maior que os arquivos visíveis, mas não consegue detectar um arquivo oculto individual. Se o seu disco foi gravado por um driver NTFS de Mac ou Linux, verifique-o no Windows ou com um driver baseado em ntfs-3g, como o NTFSTool, antes de converter.

Por dentro

O mecanismo de conversão é uma pequena biblioteca Swift sem dependências além de Foundation e CryptoKit. Ele é compartilhado pelo app para Mac e pela ferramenta de linha de comando.

  • Manifesto: uma linha JSON por arquivo com caminho, tamanho, checksum e status
  • Cópia: buffers de 4 MiB, leituras e gravações sem cache, fsync, renomeação atômica
  • Concorrência: vários arquivos ao mesmo tempo, um arquivo grande por vez em cada worker
  • As verificações de segurança ficam no mecanismo, então o app e a linha de comando aplicam as mesmas regras

Como foi testado

O mecanismo tem testes unitários (incluindo um teste que altera um byte em um backup verificado e espera que a verificação falhe) e testes de ponta a ponta que criam uma imagem de disco NTFS real, executam a conversão completa e comparam cada arquivo restaurado por SHA-256. Os testes em discos externos físicos ainda estão em andamento, o que é um dos motivos de esta ser uma versão beta.

Prefere a linha de comando?

O mesmo mecanismo está disponível como ntfs2exfat-cli.

ntfs2exfat-cli list
ntfs2exfat-cli start disk4 ~/Backups
ntfs2exfat-cli backup ~/Backups/NTFS2exFAT-<job>
ntfs2exfat-cli erase ~/Backups/NTFS2exFAT-<job> --confirm "MY DRIVE"
ntfs2exfat-cli restore ~/Backups/NTFS2exFAT-<job>

Código-fonte no GitHub →

Pronto para converter o seu disco?