TAR을 SD 카드로 추출한 후 내용을 확인하세요.

TAR을 SD 카드로 추출한 후 내용을 확인하세요.

현재 TAR 아카이브를 다음과 같은 SD 카드로 추출합니다.

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

참고 사항: rootfs.tar에는 임베디드 Linux 시스템용 파일이 포함되어 있습니다. 이러한 시스템 중 일부는 SD 카드에서 일종의 데이터 손상을 경험합니다. 이로 인해 파일 누락, 파일 내용 손상 등이 발생하여 임베디드 시스템이 제대로 작동하지 않거나 부팅되지 않을 수도 있습니다. 이는 SD 카드 생성 중 문제와 관련이 없을 가능성이 높지만 완전히 확인하려면 해당 방향에서도 조사해야 합니다.

나중에 SD 카드의 내용을 소스 TAR의 내용과 비교하는 가장 좋은 방법은 무엇입니까?

Linux에서 실용적인지 알지 못한 채 떠오르는 사항은 다음과 같습니다.

  1. SD 카드에서 새 아카이브를 생성하고 두 아카이브의 MD5를 비교합니다(또는 자연스럽게 다를까요?).
  2. 다른 곳에서 소스 TAR을 추출하고 모든 파일의 MD5를 계산하고 파일을 파일별로 비교합니다(모든 폴더/파일을 크롤링하는 것이 실용적입니까?)
  3. 어떻게 든 SD 카드 내용을 파일별로 TAR 파일의 압축 내용과 직접 비교할 수 있습니까?
  4. 폴더 구조, 파일/폴더 권한 등에 대한 특별한 검증이 필요합니까?

나는 Linux가 이 작업에 어떤 가능성을 제공하는지 모르기 때문에 가능한 경우 제안, 올바른 방향에 대한 조언 및 예제에 대해 감사하겠습니다.

답변1

동일한 파일을 얻었는지 확인하려면 tar다음을 수행할 수 있습니다(여기에서는 GNU 사용 tar).

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

소유권과 시간을 포함한 콘텐츠와 메타데이터를 비교합니다. 예를 들어 파일을 로 추출하지 않은 경우 root소유권이 다를 수 있습니다.

tar또한 파일을 생성한 것과 동일한 구현을 사용해야 합니다 tar.

답변2

각 파일의 체크섬을 비교하겠습니다.

첫 번째는 rootfs폴더에서 다음 명령을 실행하는 것입니다.

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

그런 다음 폴더에서 targetfs각 파일을 확인합니다.

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

관련 정보