tar는 zip -o(--latest-time)와 동일합니까?

tar는 zip -o(--latest-time)와 동일합니까?

Zip 유틸리티를 사용하면 다음을 수행할 수 있습니다.

zip 아카이브의 "마지막 수정" 시간을 zip 아카이브의 항목 중에서 발견된 최신(가장 오래된) "마지막 수정" 시간으로 설정합니다.

~와 함께

zip -o [...]

또는

zip --latest-time [...]

TAR로 동일한 작업을 수행하는 가장 쉬운 방법은 무엇입니까?

답변1

new_file="$(find dir/ -type f -exec stat --printf='%n\0%Y\n' {} + | sort -k2,2 -nt '\0' | tail -n1 | cut -d '' -f1)"; tar -zcf foo.tar.gz dir/; touch -r "$new_file" foo.tar.gz

무슨 일이 일어나는지에 대한 예

tar -zcf foo.tar.gz dir/; touch -r fileX foo.tar.gz

당신은 변화해야foo.tar.gz,디렉토리/위 명령에서

그것

  • 에서 모든 파일을 찾습니다디렉토리/(타르도 마찬가지)
  • epoch 이후 초 단위로 마지막 수정 타임스탬프를 가져옵니다.
  • 숫자순으로 정렬하고 맨 아래 항목(가장 최신 항목)을 가져옵니다.
  • touch는 foo.tar.gz 타임스탬프를 조정할 때 해당 파일을 참조로 사용합니다.

답변2

아마도 단일 라이너는 없을 것입니다(어쨌든 POSIX에는). 나는 스크립트(터치디렉터리)를 사용하여 디렉터리 내 파일의 가장 최근 타임스탬프와 일치하도록 디렉터리 타임스탬프를 설정한 다음 결과 아카이브에 해당 타임스탬프를 사용합니다.

마지막 단계는 -r다음의 (참조) 옵션을 사용하여 수행할 수 있습니다.touch. 사실 저는 그것도 사용하지 않고 대신에 유틸리티(cpd).

관련 정보