web-dev-qa-db-ja.com

wgetがファイルを上書きできるようにする方法

wgetコマンドを使用して、起動回数に関係なく、ローカルファイルを毎回上書きまたは許可する方法を教えてください。

次の場所からファイルをダウンロードしたいとしましょう: http://server/folder/file1.html

ここで、私がwget http://server/folder/file1.html、 これ欲しい file1.html変更された時間、既にダウンロードされた時間などに関係なく、ローカルシステムで上書きされます。ここでの目的は、wgetを呼び出すときに、既存のファイルを置き換えたり上書きしたりすることを確信していることです。 。

以下のオプションを試してみましたが、各オプションは他の目的のために意図された/意味があります。

  1. -nc => --no-clobber
  2. -N =>タイムスタンプをオンにする
  3. -r =>再帰的な取得をオンにします
9
Gnanam
wget -q http://www.whatever.com/filename.txt -O /path/filename.txt 

-qはクワイエットモードであるため、コマンドからの出力なしでcronにスローできます。

7
aleroot

このオプションは機能します

wget -N http://server/folder/file1.html

情報

-N,  --timestamping            don't re-retrieve files unless newer than
                               local.
8
Steven Penny

代わりにcurlを使用しますか?

curl http://server/folder/file1.html > file1.html
4
Stu Thompson

ディレクトリもダウンロードしない限り、そうすることはできないと思います(-xフラグを渡してください)。ファイルがわかっている場合は、-O filenameを使用できます。たとえば、次のようにします。
wget http://yourdomain.com/index.html -O index.html

0
James L

未試用:wget -r --level=0

別の可能性:curl -O上書きします(ただし、ファイル名の選択には別の方法が使用されますが、これは重要ではない場合もあります)。

スクリプトのwgetの周りに小さなラッパーを付けてみませんか?

スクリプトは、すべてのファイルを一時的な場所に移動してから、リモートファイル/ Webページを取得できます。

成功したら、一時的な場所にあるファイルを削除します。失敗した場合はファイルを元に戻し、エラーを発生させます。

すべてのファイルの名前を明確に知らない限り、wgetだけを使用して目的の操作を行う簡単な方法はありません。その場合、-Oオプションを使用すると、ダウンロードしたファイルのファイル名を強制できます。

0