Extraia TAR para SD-Card e verifique o conteúdo posteriormente

1

Atualmente extraímos um arquivo TAR para um cartão SD como este

tar xf ${ROOT}/rootfs.tar -C /cynox/${DRIVE}/${TARGET} 

Como uma nota secundária: O rootfs.tar contém arquivos para um sistema Linux embarcado. Alguns desses sistemas experimentam algum tipo de corrupção de dados nos cartões SD. Isso pode resultar em arquivos ausentes, conteúdo de arquivo corrompido, etc., impedindo que o sistema integrado funcione corretamente ou até mesmo inicialize. Isso provavelmente não está relacionado a problemas durante a criação do cartão SD, mas para ter certeza, também temos que investigar nessa direção.

Qual é a melhor maneira de comparar o conteúdo do cartão SD com o conteúdo da fonte TAR depois?

Sem saber se é prático no Linux, as coisas que vêm à mente são

  1. Crie um novo arquivo a partir do cartão SD e compare o MD5 de ambos os arquivos (ou será que estes serão naturalmente diferentes?)
  2. Extraia a origem TAR em outro lugar, calcule o MD5 de cada arquivo e compare o arquivo por arquivo (é prático rastrear todas as pastas / arquivos?)
  3. De alguma forma, comparar diretamente o conteúdo do cartão SD com o conteúdo compactado do arquivo TAR por arquivo?
  4. Precisamos de algumas validações especiais sobre estrutura de pastas, permissões de arquivos / pastas e assim por diante?

Eu não sei quais possibilidades o Linux oferece para essa tarefa, então eu ficaria agradecido por qualquer sugestão, ponteiros na direção certa e exemplos, se possível.

    
por Rev1.0 08.10.2013 / 12:01

2 respostas

2

Para verificar se você obtém o mesmo arquivo tar , você pode fazer (aqui com GNU tar ):

cd /where/it/was/extracted &&
tar tf /path/to/file.tar |
  tar -T - --no-recursion -cf - |
  cmp - /path/to/file.tar

Observe que ele compara conteúdo e metadados, incluindo propriedade e horários. Por exemplo, se você não extraiu os arquivos como root , a propriedade provavelmente será diferente.

Você também deseja usar a mesma implementação de tar como a que criou o arquivo tar .

    
por 08.10.2013 / 15:57
1

Eu compararia as somas de verificação de cada arquivo.

Primeiro, a pasta rootfs emite o seguinte comando:

rootfs# find . -type f -print0 | xargs --null sha1sum --binary > ../rootfs.sum

Em seguida, na pasta targetfs , verifique cada arquivo:

targetfs# sha1sum --check <PATH_TO_SUM_FILE> | grep FAILED
    
por 08.10.2013 / 14:17