現在、定期的にwgetを使用してプライマリWebサーバーからファイルをインポートする緊急サーバーがある設定があります。すべてが順調に進むなら、wgetが古いキャッシュファイルを削除したいと思います。ただし、要求が404を返すか、データの取得を妨げる他の問題が発生した場合(たとえば、プライマリサーバーがダウンしている場合など)、キャッシュされたデータが破損することは望ましくありません。 -Nを試しましたが、新しいバージョンがあるとデータは正しく削除されます。ただし、404が発生すると、データは0バイトのファイルで破損します。
答え1
Webサーバーの構成を変更したり、.htaccessを許可できる場合は、カスタムエラーページを設定できます。たとえば、Apache を Web サーバーと仮定すると、エラーページを作成し、/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