wgetコマンドでファイルを自動ダウンロードする方法

先生

wgetコマンドでファイルダウンロードを自動化!cronやスクリプトを使った設定方法をプロが解説。

wgetコマンドとは?基本と使い方

wgetコマンドは、ウェブからファイルをダウンロードするための強力なコマンドラインツールです。Linux、macOS、Windowsなど、多くのオペレーティングシステムで利用できます。HTTP、HTTPS、FTPプロトコルをサポートしており、ウェブサイト全体をミラーリングしたり、大きなファイルをダウンロードしたりするのに役立ちます。

基本的な使い方は非常にシンプルです。ターミナルを開き、wgetコマンドの後にダウンロードしたいファイルのURLを指定するだけです。

wget [ダウンロードURL]

例えば、https://example.com/sample.txtというファイルをダウンロードするには、次のコマンドを実行します。

wget https://example.com/sample.txt

これにより、sample.txtファイルが現在のディレクトリにダウンロードされます。

wgetコマンドは、さまざまなオプションを使用してダウンロードをカスタマイズできます。後述する便利なオプションを使うことで、より柔軟なファイルダウンロードが可能になります。

wgetコマンドの便利なオプション

wgetコマンドには、ダウンロードを効率化したり、特定の設定を行ったりするための多くのオプションがあります。ここでは、特によく使われる便利なオプションを紹介します。

-Oオプションを使用すると、ダウンロードしたファイルの保存先とファイル名を指定できます。

wget -O new_name.txt https://example.com/sample.txt

この例では、sample.txtnew_name.txtという名前で保存します。

-bオプションを使うと、wgetコマンドをバックグラウンドで実行できます。これにより、ターミナルを他の作業に利用しながらダウンロードを続けることができます。

wget -b https://example.com/large_file.zip

バックグラウンドで実行すると、ログファイルwget-logが作成され、ダウンロードの進捗状況を確認できます。

-cオプションは、中断されたダウンロードを再開する際に使用します。大きなファイルをダウンロードしている際に、ネットワークが切断された場合などに便利です。

wget -c https://example.com/large_file.zip

wgetは、中断された場所からダウンロードを再開します。

-rオプションを使用すると、ウェブサイト全体を再帰的にダウンロードできます。指定したURLからリンクされているすべてのページとファイルをダウンロードします。ウェブサイトのミラーリングに役立ちます。

wget -r https://example.com

このオプションは、注意して使用する必要があります。ウェブサイトに過度の負荷をかける可能性があるため、robots.txtを尊重し、ダウンロードの深さを制限するなどの対策を講じることが重要です。

--limit-rateオプションを使用すると、ダウンロード速度を制限できます。他のネットワークトラフィックに影響を与えないようにする場合に便利です。

wget --limit-rate=200k https://example.com/large_file.zip

この例では、ダウンロード速度を200KB/秒に制限しています。

自動ダウンロードの設定方法

wgetコマンドを自動的に実行するには、cronなどのタスクスケジューラを使用します。cronを使用すると、指定した時間間隔でコマンドを自動的に実行できます。

cronの設定を行うには、ターミナルでcrontab -eコマンドを実行します。これにより、cronの設定ファイルが開きます。初めてcronを設定する場合は、テキストエディタの選択を求められることがあります。

設定ファイルに次の形式でタスクを追加します。

[分] [時] [日] [月] [曜日] [実行するコマンド]

例えば、毎日午前0時にhttps://example.com/data.csvをダウンロードするには、次の行を追加します。

0 0 * * * wget https://example.com/data.csv -O /path/to/save/data.csv

上記の例では、ダウンロードしたファイルを/path/to/save/data.csvに保存しています。必要に応じて、適切な保存先を指定してください。

cronの設定を保存すると、指定した時間になるとwgetコマンドが自動的に実行されます。

より複雑な自動化を行う場合は、シェルスクリプトやPythonスクリプトを使用することもできます。これらのスクリプトを使用すると、ダウンロードの前に特定条件の確認や、ダウンロード後のファイル処理など、より高度な処理を行うことができます。

import subprocess

def download_file(url, save_path):
    try:
        subprocess.run(['wget', url, '-O', save_path], check=True)
        print(f'Downloaded {url} to {save_path}')
    except subprocess.CalledProcessError as e:
        print(f'Error downloading {url}: {e}')

# Example usage
download_file('https://example.com/data.csv', '/path/to/save/data.csv')

上記のPythonスクリプトは、subprocessモジュールを使用してwgetコマンドを実行します。download_file関数にURLと保存先を渡すと、ファイルをダウンロードできます。エラーが発生した場合は、エラーメッセージが表示されます。

このスクリプトをcronで定期的に実行するように設定することで、より柔軟な自動ダウンロードシステムを構築できます。

参考リンク

まとめ

wgetコマンドは、ウェブからファイルをダウンロードするための非常に強力なツールです。基本的な使い方から、便利なオプション、自動ダウンロードの設定方法までを理解することで、日々の作業を効率化することができます。cronやスクリプトと組み合わせることで、さらに高度な自動化も実現可能です。ぜひ、wgetコマンドを使いこなして、快適なファイルダウンロード環境を構築してください。