![수정 시간이 로컬에서 추출된 콘텐츠보다 최신인 경우에만 "wget"을 사용하여 타르볼을 다운로드하세요.](https://linux55.com/image/182369/%EC%88%98%EC%A0%95%20%EC%8B%9C%EA%B0%84%EC%9D%B4%20%EB%A1%9C%EC%BB%AC%EC%97%90%EC%84%9C%20%EC%B6%94%EC%B6%9C%EB%90%9C%20%EC%BD%98%ED%85%90%EC%B8%A0%EB%B3%B4%EB%8B%A4%20%EC%B5%9C%EC%8B%A0%EC%9D%B8%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%A7%8C%20%22wget%22%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%83%80%EB%A5%B4%EB%B3%BC%EC%9D%84%20%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C%ED%95%98%EC%84%B8%EC%9A%94..png)
원격 서버에 .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
파일 다운로드 시간을 리모컨과 동일하게 설정하세요.