현재 정기적으로 wget을 사용하여 기본 웹 서버에서 파일을 가져오는 비상 서버가 있는 설정이 있습니다. 모든 것이 순조롭게 진행된다면 wget이 이전 캐시 파일을 삭제하기를 바랍니다. 그러나 요청이 404를 반환하거나 데이터 검색을 방해하는 다른 문제가 발생하는 경우(예: 주 서버가 다운되는 경우) 캐시된 데이터가 손상되는 것을 원하지 않습니다. -N을 사용해 보았지만 새 버전이 있으면 데이터가 올바르게 삭제됩니다. 그러나 404가 발생하면 0바이트 파일로 데이터가 손상됩니다.
답변1
웹 서버의 구성을 수정하거나 .htaccess를 허용할 수 있는 경우 사용자 정의 오류 페이지를 설정할 수 있습니다. 예를 들어, Apache를 웹 서버로 가정하면 오류 페이지를 만들고 /var/www/error-pages/404-error.html
.htaccess 또는 vhosts 섹션에 다음 콘텐츠를 추가합니다.
Alias /error-pages /var/www/error-pages
ErrorDocument 404 /error-pages/404-error.html
여러 가상 호스트가 있는 경우 alias 지시어와 함께 여러 가상 호스트에 대해 동일한 오류 페이지를 사용할 수 있습니다. 이것만으로도 손상을 방지하는 데 도움이 되지만 매개변수를 추가하여 모든 사용자 정의 오류 페이지를 건너뛸 -X error-pages
수도 있습니다.wget
답변2
wget을 호출하기 전에 파일을 복사하세요. (wget에게 파일을 삭제하는 대신 연결을 해제하고 다시 생성하라고 지시할 수 있는 방법은 없는 것 같습니다.)
cp -p foo foo.prev
wget http://example.com/foo
if ! [ -S "foo" ]; then mv -f foo.prev foo; done