Extraia o TAR para o cartão SD e verifique o conteúdo posteriormente

Extraia o TAR para o cartão SD e verifique o conteúdo posteriormente

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

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

Como observação lateral: o rootfs.tar contém arquivos para um sistema Linux embarcado. Alguns desses sistemas apresentam algum tipo de corrupção de dados nos cartões SD. Isso pode resultar na perda de arquivos, conteúdo de arquivo corrompido, etc., impedindo o sistema embarcado de funcionar corretamente ou até mesmo de inicializar. Provavelmente, isso 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 posteriormente o conteúdo do cartão SD com o conteúdo do TAR de origem?

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ão naturalmente diferentes?)
  2. Extraia o TAR de origem em outro lugar, calcule o MD5 de cada arquivo e compare arquivo por arquivo (é prático rastrear todas as pastas/arquivos?)
  3. De alguma forma, compare 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 em relação à estrutura de pastas, permissões de arquivos/pastas e assim por diante?

Não sei quais possibilidades o Linux oferece para esta tarefa, então ficaria grato por quaisquer sugestões, indicações na direção certa e exemplos, se possível.

Responder1

Para verificar se você obteve o mesmo tararquivo, você poderia 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 tarque criou o tararquivo.

Responder2

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

Primeiro é a rootfspasta que emite o seguinte comando:

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

Em seguida, na targetfspasta, verifique cada arquivo:

targetfs# sha1sum --check <PATH_TO_SUM_FILE> | grep FAILED

informação relacionada