원격 서버에 .tgz 아카이브가 있습니다. 파일이 로컬 복사본보다 최신인 경우에만 파일을 다운로드하고 싶습니다.콘텐츠나는 가지고있다. .tgz의 이전 복사본을 보관하면 사용할 수 있지만 wget -N
대신 추출된 콘텐츠만 보관합니다. wget -N
콘텐츠의 사본만 보관하면서 동등한 항목을 어떻게 사용할 수 있나요 ? 솔루션은 가능한 한 크로스 플랫폼이어야 합니다.
내가 시도한 한 가지는 다음과 같습니다.
- 추출된 콘텐츠를 고유한 디렉터리에 저장
- 디렉토리의 액세스/수정 타임스탬프를 tarball과 동일하게 설정하십시오.
- 새 버전을 확인할 때
touch -r <directory> <tarball>
적절한 타임스탬프를 사용하여 대상 파일의 가짜 버전을 만듭니다. wget -N
wget -N
하지만 파일 크기와 타임스탬프를 확인했고 내 가짜 타르볼의 크기가 정확하지 않았기 때문에 실패했습니다 .
답변1
이전 타르볼을 유지하고 싶지 않은 이유가 있습니까? 이것은 정말 가장 쉽고 확실한 방법입니다.
Linux에서는 dd
올바른 크기의 파일을 매우 쉽게 생성하고 이를 사용하여 touch
타임스탬프를 수정할 수 있습니다.
타르볼을 삭제하기 전에 타임스탬프와 크기를 저장하십시오:
wc -c tar.tgz | awk ‘{ print $1 }’ > ref_file
touch -r tar.tgz ref_file
더미를 올바른 크기로 다시 만듭니다.
dd of=tar.tgz seek=$(cat ref_file) count=0
touch -r ref_file tar.tgz
답변2
wget 대신 컬을 사용해 볼 수 있나요?
$ curl --time-cond <directory> --remote-time --output <tarball> <download_url>
--time-cond
시간 문자열 또는 파일 이름일 수 있습니다.
--remote-time
파일 다운로드 시간을 리모컨과 동일하게 설정하세요.