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

관련 정보