'squashfs-tools' cria um arquivo compactado incorretamente

0

Eu tenho um despejo de sistema de arquivos 6.3G que estou tentando compactar usando squashfs, mas depois de usar unsquashfs , o arquivo gerado é diferente do dump original.

Gerei uma diferença entre o arquivo original e o arquivo no sistema squashfs com o seguinte comando:

cmp -l /media/daboross/extstorage/backup-2014-12-05/sda7_backup.img \
    /media/daboross/disk/sda7_backup.img  \
    | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}'  \
    > diff.txt

em que /media/daboross/extstorage/backup-2014-12-05/sda7_backup.img é o arquivo original e /media/daboross/disk/ é uma montagem do arquivo squashfs. Veja link para a origem deste comando.

Aqui está o arquivo gerado pelo diff: link . Pode haver algum padrão nisso que possa ajudar a diagnosticar o problema, não tenho certeza do que seria, mas incluindo isso apenas no caso.

Se houver alguma informação que possa ser útil, sinta-se à vontade para solicitá-la. Eu não tenho atualmente o sistema de arquivos squashfs que gerou que esse arquivo de diferença foi gerado, mas eu posso apenas executar mksquashfs novamente se necessário - ele está criando consistentemente um arquivo que não é o mesmo.

A versão do mksquashfs / unsquashfs (do squashfs-tools):

mksquashfs version 4.2-git (2013/04/07)
unsquashfs version 4.2-git (2013/03/13)

Qualquer ideia sobre o motivo pelo qual isso ocorre ou o que eu posso fazer para ajudar é muito apreciada.

Editar / atualizar:

Após a atualização da versão do squashfs-tools empacotada com o Ubuntu para o squashfs v4.3, ainda recebo um erro, mas não tanto quanto um.

A execução do comando binary diff acima produz isso para o arquivo compactado e descompactado usando v4.3: link .

Se você olhar os arquivos de diferenças binárias, verá que o arquivo diff produzido com a v4.3 é exatamente igual à última parte do arquivo produzido com o 4.2-git. Eu acho que isso provavelmente significa que parte da corrupção foi corrigida na v4.3, mas não em tudo.

    
por daboross 07.12.2014 / 03:45

1 resposta

1

Ponto óbvio - você reclama que o Unsquashfs está gerando um arquivo diferente, mas depois demonstra isso montando o sistema de arquivos Squashfs e comparando isso ....

Se o bug estava no Unsquashfs você espera montar o sistema de arquivos para funcionar (dando a saída correta). Se o Unsquashfs e a montagem não funcionarem, então o bug (se houver) provavelmente estará no Mksquashfs.

% bl0ck_qu0te%

Eles se parecem com instantâneos da minha árvore de desenvolvimento git (eles têm -git na versão).

É possível que tenham sido feitos instantâneos quando o código de desenvolvimento estava em um estado inconsistente ou tinha erros temporários.

Você deve experimentar as versões de lançamento do squashfs-tools. O Squashfs-tools 4.3 foi lançado este ano e você deveria tentar isso. No entanto, isso tem um bug conhecido causando sistemas de arquivos incorretos em certos casos (apresentados em setembro de 2011), mas isso não parece o bug que você está atingindo.

Dependendo se o Squashfs-tools 4.3 acima funciona, você também deve tentar o lançamento anterior do Squashfs-tools 4.2 (de 2011), e a última versão de desenvolvimento do git (onde o bug conhecido de corrupção do sistema de arquivos foi corrigido).

Os tarballs de lançamento e a árvore de desenvolvimento do git podem ser obtidos de

link

    
por Phillip Lougher 07.12.2014 / 22:30