Problema de compactação de arquivo NTFS

Problema de compactação de arquivo NTFS

Tenho várias centenas de arquivos de fotos que foram movidos inadvertidamente de uma unidade externa compactada e formatada em Windows NTFS para uma segunda unidade externa formatada pelo Mac OS X. A movimentação foi realizada no sistema operacional Mac OS X. Infelizmente, o processo de movimentação de arquivos foi concluído sem que todos os arquivos originais fossem “descompactados” pelo sistema de arquivos do Windows.

Alguém tem conhecimento de algum serviço de recuperação, aplicativo ou método manual de conversão que me permita recuperar esses arquivos de fotos, que agora são vistos como arquivos JPG e RAW "corrompidos"? Qualquer assistência ou sugestão que você possa oferecer será muito apreciada.

Responder1

A compactação NTFS é indicada por um sinalizador nos metadados do arquivo, que é armazenado na tabela de arquivos mestre (MFT). É difícil configurá-lo diretamente, porque normalmente quando você altera esse sinalizador, o driver do sistema de arquivos compacta ou descompacta o arquivo para você. Você provavelmente poderia adicionar esse sinalizador manualmente - é apenas um bit nos atributos do arquivo DWORD - mas hackear diretamente o MFT provavelmente não é a melhor abordagem. Em vez disso, tente o seguinte:

  1. Em um volume NTFS (pode ser um flashdrive, se você formatá-lo com NTFS), crie um (ou vários) arquivos compactados (usando o Windows). Por causa destas instruções, chamaremos esses arquivos de rescue1, rescue2, etc.
  2. Conecte a unidade NTFS ao seu sistema Mac (sem primeiro descompactar os arquivos). Monte a leitura/gravação do volume. Digamos que esteja montado /mount/ntfs(na verdade, não uso o OS X o suficiente para memorizar onde ele monta volumes externos).
  3. Usando uma ferramenta que copia arquivosconteúdo, como o utilitário de linha de comando dd, copie o conteúdo dos arquivos compactados sem metadados no conteúdo dos arquivos compactados no volume NTFS. O comando seria algo como dd if=/path/to/bad/file of=/mount/ntfs/rescue1 bs=4M.
  4. Reconecte a unidade ao Windows e veja se os arquivos compactados podem ser abertos corretamente agora. Se puderem, você poderá fazer com que o Windows os descompacte com segurança (no local ou copiando para uma unidade que não suporta compactação, como uma unidade flash FAT32).
  5. Se essa abordagem funcionar, você poderá usá-la para resgatar todas as suas centenas de arquivos. Basta criar quantos arquivos compactados na unidade NTFS você precisar, nomeá-los da maneira que achar melhor (podem ser os nomes originais) e copiar o conteúdo do Mac.

Observe que você não precisa compactar todo o volume NTFS; isso apenas faz com que todos os diretórios herdem o sinalizador "Comprimido" e cada arquivo o herde do diretório do arquivo. Não faria mal nenhum fazer isso, no entanto.

Eu recomendo usar um volume NTFS de backup ou descartável; se o driver NTFS do OS X for tão ruim, ele poderá corromper o MFT quando você tentar gravar em um volume do Windows.

Abordagem alternativa mais complicada, se o procedimento acima não funcionar:

  1. Crie vários arquivos compactados no Windows. A parte difícil é que eles precisam corresponder aos tamanhos dos arquivos danificados. Se você deseja resgatar um arquivo com 30.913 bytes de tamanho, você precisará do seucomprimidoArquivo NTFS para ter esse tamanho após a compactação. Eu serei honesto; Não tenho certeza de como organizar isso. No mínimo, faça os arquivos de resgatepelo menoso tamanho (no disco) dos arquivos que precisam ser resgatados. É melhor fazer com que o tamanho corresponda a 4k, pois esse é o tamanho padrão de um cluster NTFS (os pedaços de alocação usados ​​para dados de arquivo).
  2. Use o fsutilutilitário no Windows para obter oextensõesdos arquivos de resgate. As extensões são os deslocamentos reais no volume onde os dados do arquivo estão armazenados na partição.
    • O comando é fsutil file queryextents <filename>e dependendo do local, pode ser necessário executá-lo como administrador.
    • A saída do comando é mais ou menos assim: VCN: 0x0 Clusters: 0x2 LCN: 0x48000. O que isso diz é que o arquivo ocupa dois clusters,número do cluster lógico0x48000 (que é deslocado 4096*0x48000=1207959552) para deslocamento de volume 0x48001, que é 8k (2 x 4k/cluster) de espaço total. Na prática, o fim disso geralmente é o espaço não utilizado.
    • Pode haver múltiplas linhas de saída (isso acontece quando um arquivo está fragmentado; é improvável que aconteça em um volume recém-formatado se você dimensionar cada arquivo antes de criar o próximo). O primeiro valor (onúmero do cluster virtual) nas linhas subsequentes não será zero, será o deslocamento (em clusters) dentro do arquivo onde essa extensão começa (por exemplo, se for 0x3, isso significa que a extensão começa 12k no arquivo).
  3. Desconecte a unidade e conecte-se ao OS X. Façanãomonte o volume desta vez. Em vez disso, encontre o identificador de volume correto. No Linux, isso seria algo como /dev/sdb1. (Segunda unidade -> sdb1, primeira partição -> sdb1).
  4. Usando dd, copie diretamente para o volume bruto de seus arquivos compactados incorretamente.
    • Por exemplo, digamos que seu arquivo tenha duas extensões:
      • VCN: 0x0 Clusters: 0x15 LCN: 0x13c
      • VCN: 0x15 Clusters: 0x3f6 LCN: 0xab20
    • Você usaria os seguintes comandos para dd, com nomes de arquivos ajustados conforme necessário. Veja opágina de manual do ddpara obter mais informações, mas por enquanto observe que todos os parâmetros ddestão convenientemente em múltiplos do tamanho do bloco ( bsparam), mas que os valores hexadecimais foram convertidos para decimais (não tenho certeza se ddconseguem lidar com hexadecimal corretamente; alguns programas do tipo dd podem, mas não todos ):
      • dd if=/path/to/bad/file of=/dev/sdb1 bs=4K count=21 seek=316
      • dd if=/bath/to/bad/file of=/dev/sdb1 bs=4k count=1014 seek=337 skip=21
  5. Depois de copiar os dados do arquivo para a partição bruta, você poderá conectar a unidade ao Windows e ler os arquivos compactados (resgatados). Se os tamanhos dos arquivos não corresponderem exatamente, você poderá descobrir que há um pouco de lixo no final dos arquivos, mas espero que isso não seja um problema.

A outra abordagem (possivelmente mais fácil, atémuitomais fácil) é encontrar a rotina ntfs-3gque lida com a descompressão NTFS. Execute essa rotina diretamente nos arquivos. Alternativamente, veja se você consegue encontrar uma cópia do ntfsdiskeditutilitário (parece ter sido descontinuado) e veja se você pode usá-lo para definir manualmente o bit "Compactado" no arquivo depois de copiá-los (como arquivos descompactados) para um volume NTFS.

informação relacionada