web-dev-qa-db-ja.com

タイムスタンプを無視してwgetに既存のファイルを上書きさせるにはどうすればよいですか?

「-N」と「--no-clobber」を試しましたが、このsynax「example.exe.1」を使用して番号が追加された既存のexample.exeの新しいコピーを取得するだけです。これは私が欲しいものではありません。私は、wgetを使用せずにexample.comのコピーを既に保存した同じフォルダーにあるファイルexample.exeをダウンロードして上書きするだけで、鉱山がダウンロードフォルダーに既に存在するexample.exeファイルに関して古いか新しいかどうかを確認します。私は可能だと思いますか、example.exeファイルを削除するスクリプトを作成する必要がありますか、または彼の変更日などを変更するスクリプトを作成する必要がありますか?

24

-Oオプションを使用して出力ファイルを指定すると、既存のファイルが上書きされます。

例えば:

wget -O index.html bbc.co.uk

複数回実行すると、index.htmlが上書きされ続けます。

36
PeterSW

wgetでは、オプション-Oを使用してコマンドラインで出力ファイルに明示的に名前を付けない限り、既存のファイルを上書きできません。

私は少し怠け者で、ダウンロードしたファイルから既にわかっている出力ファイル名をコマンドラインに入力したくありません。したがって、次のようにcurlを使用します。

curl -O http://ftp.vim.org/vim/runtime/spell/fr.utf-8.spl

安全でないサイトからこのようなファイルをダウンロードするときは注意してください。上記のコマンドは、接続されたWebサイトが名前を付けたいファイルを書き込みます(ただし、現在のディレクトリ内に)。最終的な名前は、リダイレクトおよびphpスクリプトによって非表示にされるか、URLで難読化される場合があります。上書きしたくないファイルを上書きしてしまう可能性があります。

また、lsを使用した後に現在のディレクトリでcurlまたはその他の魅力的な名前のファイルを見つけた場合は、ダウンロードしたファイルを実行しないでください。不正または破損したWebサイトからダウンロードされたトロイの木馬である可能性があります。

15
wget --backups=1 google.com

名前を変更original file with .1接尾辞を使用して、目的のファイル名に新しいファイルを書き込みます。

正確に要求されたものではありませんが、場合によっては便利です。

10

-cまたは--continue

manual から:

空でないファイルで「-c」を使用し、サーバーが継続的なダウンロードをサポートしていない場合、Wgetはダウンロードを最初から再開し、既存のファイルを完全に上書きします

10
3zzy

-cオプションが気に入っています。マニュアルページから始めて、ウェブから始めましたが、これを数回検索しました。ウェブカメラを中継する場合のように、画像には常にimage.jpgという名前を付ける必要があります。それはマニュアルページでより明確になるはずのようです。

私はこれを数年間バックグラウンドでダウンロードするために使用してきましたが、wgetrcファイルで "limit-rate ="と組み合わせることもあります。

while true
do
wget -c -i url.txt && break
echo "Restarting wget"
sleep 2
done

Url.txtという小さなファイルを作成し、ファイルのURLをそこに貼り付けます。このスクリプトをパスに設定するか、エイリアスとして設定して実行します。エラーがなくなるまでダウンロードを再試行し続けます。時には最後に表示されるループに入ります

 416 Requested Range Not Satisfiable
 The file is already fully retrieved; nothing to do.

しかし、それは無害です、ただctrl-cそれ。 wgetが再試行を実行しなくなったり、接続が一時的に失われたりしても、常に必要なファイルが取得されていると思います。一度に何日もダウンロードしてきました。ダイヤルアップのCDイメージ、はい、常にwgetを使用します。

2
Alan Corey

私のユースケースには2つの異なるURLが含まれ、2番目のURLが存在しない場合もありますが、存在する場合は、最初のファイルを上書きします。

Wget -Oを使用する際の問題は、2番目のファイルが存在しない場合、最初のファイルを空白ファイルで上書きすることです。

したがって、私が見つけることができる唯一の方法は、ifステートメントを使用することです。

--spiderはファイルが存在するかどうかを確認し、存在する場合は0を返します

-静かに、出力なしで静かに失敗します

-nvは静かですが、それでもエラーを報告します

wget -nv https://example.com/files/file01.png -O file01.png
# quietly check if a different version exists
wget --quiet --spider https://example.com/custom-files/file01.png
if [ $? -eq 0 ] ; then    
    # A different version exists, so download and overwrite the first
    wget -nv https://example.com/custom-files/file01.png -O file01.png
fi

冗長ですが、必要だと感じました。これが誰かに役立つことを願っています。

0
comfytoday