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,목차/위 명령에서
그것
- 모든 파일 찾기목차/(타르와 동일)
- 에포크 이후 마지막으로 수정된 타임스탬프를 초 단위로 가져옵니다.
- 숫자로 정렬하고 가장 낮은 것(최신)을 얻습니다.
- touch는 foo.tar.gz 타임스탬프를 조정할 때 이 파일을 참조로 사용합니다.
답변2
(적어도 POSIX에서는) 줄이 없을 수도 있습니다. 나는 스크립트(디렉토리를 터치하세요)는 디렉터리에 있는 파일의 최신 타임스탬프와 일치하도록 디렉터리 타임스탬프를 설정한 다음 결과 아카이브에 해당 타임스탬프를 사용합니다.
마지막 단계는 -r
(참조) 옵션을 사용하여 수행할 수 있습니다.touch
. 사실 저도 이 기능을 사용하지 않고 대신 유틸리티(cpd
).