수정 시간이 로컬에서 추출된 콘텐츠보다 최신인 경우에만 "wget"을 사용하여 타르볼을 다운로드하세요.

수정 시간이 로컬에서 추출된 콘텐츠보다 최신인 경우에만 "wget"을 사용하여 타르볼을 다운로드하세요.

원격 서버에 .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파일 다운로드 시간을 리모컨과 동일하게 설정하세요.

관련 정보