복사 가능한 바이너리 CPIO(initramfs) 아카이브를 만드는 실용적인 방법이 있습니까?

복사 가능한 바이너리 CPIO(initramfs) 아카이브를 만드는 실용적인 방법이 있습니까?

파일의 내용이 동일한 경우(동일한 권한을 가진 루트가 소유한 경우) initramfs가 언제 어디서 빌드하든 동일한 해시를 갖기를 원합니다. GNU cpio에는 아카이브에 있는 파일의 타임스탬프를 삭제하거나 설정하는 옵션이 표시되지 않습니다. 재현 가능한 제품을 얻을 수 있도록 cpio 및 기타 보관 프로그램에 대한 입력을 처리하는 비교적 표준적인 방법이 있습니까?

그 외에도 전통적인 "날짜가 주어지지 않았습니다" 타임스탬프가 있습니까? 대부분의 소프트웨어가 눈치채지 못하는 것은 무엇입니까? 예를 들어 0세대 초?

예를 들어 initramfs의 입력 디렉터리를 조회하고 모든 타임스탬프를 수동으로 0으로 설정하면 아카이브를 구축하고 다른 시스템에서 추출한 후 프로세스를 반복한 다음 다시 구축하여 동일한 파일을 얻을 수 있습니까?

답변1

최신 버전의 GNU에는 원하는 작업을 어느 정도 수행하는 플래그가 cpio있습니다 . --reproducible내 이해는비결정적 도구 제거타임스탬프 요구 사항은 사후에 처리됩니다. touch물론 포장하기 전에 시간을 설정할 수도 있습니다.

답변2

이를 수행하기 위해 이것을 사용할 수 있습니다 star. 이는 를 find기반으로 합니다 libfind.

예를 들면 다음과 같습니다.

star -c H=cpio -find somedir -chmtime 2020-05-20T12:10:12 > archive.cpio

물론 find원하는 경우 다양한 타임스탬프에 대해 복잡한 규칙을 사용할 수 있습니다.

확인하다http://sourceforge.net/projects/schilytools/files/star최신 tarball에서 최신 소스 코드를 얻으세요 schilytools.

참고: 다음 내용은 광고처럼 보일 수 있지만 이 정보는 요청되었으며 처음부터 오픈 소스였습니다. 가장 오래된 무료 구현이므로 star잘 알려져 있어야 합니다 . 1982년에 시작되어 2020년 현재 38년이 되었습니다.UNIXtar

startar제가 아는 것 중 가장 성숙하고 완전한 기능을 갖춘 구현입니다. 다른 구현에서는 아카이브 형식 향상 개념을 복사하는 경우가 많으며 이는 다른 사람이 도입하고 사용하는 속성 접두사로 식별됩니다 star.SCHILY.*star

32에서는 최대 속도를 위해 구성 가능한 FIFO를 공유하는 두 개의 프로세스로 분할됩니다. star -copy알려진 다른 UNIX 트리 복사 방법보다 빠릅니다.

30년 동안 다양한 아카이브 형식을 지원하고 자동으로 감지해 왔습니다.

tar17년 동안 이는 다양한 UNIX 아카이버 , cpio pax심지어 호환되지 않는 아카이버 와도 명령줄 호환성을 가능하게 하는 범용 아카이빙 도구였습니다 GNU tar.

16년 이후 find부터 libfind.find

이제 2년 동안 경로 이름 길이 제한이 완전히 사라졌습니다.

바라보다http://cdrtools.sourceforge.net/private/star.html그리고http://schilytools.sourceforge.net/man/man1/star.1.html더 많은 정보를 알고 싶습니다.

관련 정보