1 pontos por GN⁺ 2024-12-01 | 1 comentários | Compartilhar no WhatsApp

Ntfs2btrfs

Ntfs2btrfs é uma ferramenta que converte o sistema de arquivos NTFS da Microsoft para o Btrfs, um sistema de arquivos open source. É semelhante ao btrfs-convert, que converte ext2. Após a conversão, a imagem original é salva em image/ntfs.img; se quiser manter a conversão, você pode apagar esse arquivo para liberar espaço. Parece ser estável, mas não há responsabilidade caso ocorra algum problema. O driver de sistema de arquivos Btrfs para Windows, WinBtrfs, também pode ser de interesse. Fica aqui o agradecimento a Eric Biggers, que conseguiu fazer engenharia reversa com sucesso dos "dados compactados WOF" do Windows 10, e cujo código é utilizado.

Como usar

  • Windows: execute ntfs2btrfs.exe D:\ em um Prompt de Comando com privilégios de administrador
    • Não funciona na unidade de boot nem em unidades com arquivo de paginação em uso
    • Se estiver usando o WinBtrfs, é preciso remover a flag somente leitura do subvolume image para poder apagá-lo
  • Linux: execute ntfs2btrfs /dev/sda1 como root

Instalação

  • Windows: baixe o arquivo Zip mais recente na página Releases ou use Scoop
  • Linux:
    • Arch
    • Fedora (disponível graças a Conan-Kudo)
    • Gentoo - disponível como sys-fs/ntfs2btrfs no repositório guru
    • Debian (disponível graças a alexmyczko)
    • Ubuntu (disponível graças a alexmyczko)
    • openSUSE (disponível graças a David Sterba)
  • Para outras distribuições ou sistemas operacionais, é necessário compilar manualmente

Changelog

  • 20240115
    • Corrigido problema de compilação no GCC 14 (-Werror=incompatible-pointer-types ativado por padrão)
  • 20230501
    • Corrigido problema de ordenação que não era diagnosticado por btrfs check
    • Corrigido problema em que itens de metadados eram gravados com valor de nível incorreto
    • Ignora ADS com nomes longos demais
  • 20220812
    • Adicionada a opção --no-datasum para pular o cálculo de checksum
    • Preserva metadados LXSS / WSL
    • Corrigido problema em que letras de unidade minúsculas não eram reconhecidas
    • Corrigido problema de corrupção quando há um arquivo no último megabyte do disco
  • 20210923
    • Adicionado suporte a compactação (Btrfs) (zlib, lzo, zstd)
    • Adicionado suporte a outros algoritmos de hash: xxhash, sha256, blake2
    • Adicionado suporte a rollback para NTFS
    • Aumentada a velocidade de conversão em volumes com muitos inodes
    • Corrigido bug quando há um arquivo fragmentado na posição do superbloco
    • Corrigido buffer overflow ao ler descritores de segurança
    • Corrigido problema de corrupção do sistema de arquivos não detectado por btrfs check
  • 20210523
    • Melhorado o tratamento de arquivos grandes compactados
  • 20210402 (release apenas do código-fonte)
    • Corrigido problema de compilação em arquiteturas não amd64
  • 20210105
    • Adicionado suporte à compactação NTFS
    • Adicionado suporte a "dados compactados WOF"
    • Corrigidos problemas causados por arquivos esparsos
    • Outras correções de bugs
  • 20201108
    • Melhorado o tratamento de erros
    • Adicionadas mensagens melhores quando o NTFS está corrompido ou não está limpo
    • Melhorado o tratamento de relocação
  • 20200330
    • Release inicial

Compilação

  • Windows: abra o diretório do código-fonte na versão mais recente do MSVC e compile clicando com o botão direito em CMakeLists.txt
  • Linux:
    • mkdir build
    • cd build
    • cmake ..
    • make
    • É necessário instalar libfmt - deve estar disponível no gerenciador de pacotes
    • O suporte a compactação requer zlib, lzo, zstd - devem estar disponíveis no gerenciador de pacotes. Para desativar, consulte as opções cmake WITH_ZLIB, WITH_LZO, WITH_ZSTD

O que funciona

  • Arquivos
  • Diretórios
  • Links simbólicos
  • Outros pontos de nova análise
  • Descritores de segurança
  • Fluxos de dados alternativos
  • Atributos DOS (oculto, sistema etc.)
  • Rollback para a imagem NTFS original
  • Preservação de metadados LXSS

O que não funciona

  • Atributos estendidos antigos do Windows (não usados)
  • ADS grandes (mais de 16KB) (não usados)
  • Preservação da flag de diferenciação entre maiúsculas e minúsculas
  • Tamanhos de cluster incomuns (diferentes de 4KB)
  • Arquivos criptografados

É possível dar boot no Windows com Btrfs?

  • Sim, mas algumas condições precisam ser atendidas. Consulte o Quibble.

1 comentários

 
GN⁺ 2024-12-01
Comentários do Hacker News
  • O nível de "hold-my-beer" é altíssimo

    • Expressão usada quando alguém vai fazer algo muito arriscado ou desafiador
  • Quando tentei antes, o disco virou somente leitura

    • Espero que isso tenha melhorado
  • Muito legal, mas vai levar pelo menos uma semana até as pessoas ficarem sabendo disso

    • Só vão descobrir depois de finalmente formatar o drive NTFS que adiaram por 2 anos
  • Estou pensando em como aplicar isso ao ZFS

    • Deve ser possível adicionando uma camada que leia outros tipos de sistema de arquivos e sintetize ponteiros de bloco do ZFS
    • Se o ZFS tivesse uma função de reescrita de ponteiros de bloco, seria possível reescrever tudo e concluir a conversão
    • O ZFS não é um sistema de arquivos CAS adequado, então não pode ter uma função de reescrita de ponteiros de bloco
  • Eu ficaria muito surpreso se houvesse suporte a arquivos com compressão LZX

    • Não confundir com a compressão de arquivos da época do Windows 2000
    • É um recurso que precisa ser ativado com o comando compact.exe /C /EXE:LZX (nome do arquivo)
  • O NTFS é estável, mais rápido que o btrfs e tem os mesmos recursos

    • É difícil entender por que alguém tentaria substituir o NTFS