10

cron ジョブで wget を使用して、.jpg ファイルを 1 分に 1 回 (毎回同じファイル名で、上書きして) Web サーバー フォルダーにフェッチしています。このフォルダは、Web サーバーもそこからその画像を提供するという点で「ライブ」です。ただし、画像の取得中に誰かがそのページを Web ブラウジングすると、エラーのある jpg と見なされ、ブラウザにそのように表示されます。だから私がする必要があるのは、Firefoxがファイルをダウンロードしているときと同様に、wgetは/ varまたは宛先フォルダーのいずれかに一時的な名前で一時ファイルに書き込み、すべてが揃うまで名前を変更する必要がありますアトミック(または少なくとも無視できる期間)ステップ。

wget のマニュアル ページを読みましたが、このためのコマンド ライン オプションはないようです。私はそれを逃しましたか?それとも、cron ジョブで wget と move の 2 つのコマンドを実行する必要がありますか?

4

1 に答える 1

2

GNU Wget だけでこれを行う方法はありません。

wgetの仕事はファイルをダウンロードすることであり、それを行います。シンプルな 1 行のスクリプトで、探しているものを実現できます。

$ wget -O myfile.jpg.tmp example.com/myfile.jpg && mv myfile.jpg{.tmp,}

アトミックであるためmv、少なくとも Linux では、準備完了ファイルのアトミック更新を取得します。

于 2018-05-17T14:11:35.287 に答える