ファイルを一括ダウンロード
次世代シーケンサーのデータは巨大で、データのコピーをするのも一苦労です。PoTHoSやMitsucalにはfastqファイルへのリンクをつけてありますが、一つずつクリックして保存するのは大変です。Linuxのツールを使って楽をしましょう。
wgetを使う
wgetはHTML中のリンクをたどってダウンロードしてくれます。ファイルへのリンクがあるページ(URL)を与えるとすべてのリンク先をダウンロードしてくれます。
# https://pothos.tsbio.info/TfPT/filer/file/ のfastqファイルをダウンロードする例 $ wget --no-check-certificate --recursive --level 1 --no-clobber https://pothos.tsbio.info/TfPT/filer/file/
オプションの説明 (先頭のハイフンは2個であることに注意)
- –no-check-certificate
- サーバーの証明書の検証を行わない。
- –recursive
- 再帰的にファイルをダウンロードする。wgetの最初の引数のHTMLファイルの中身を調べて別のファイルへのリンクがあればそれをダウンロードする。
- –level
- リンク先をどのぐらいたどるか。1を指定することで、最初のページ内のリンクに限定する。5とかにするとPoTHoSのトップページからすべてをたどっていくので大変なことになる。
- –no-clobber
- 一度ダウンロードしたファイルは再ダウンロードしない。ダウンロードを失敗した場合は、そのファイルを削除して、もう一度同じコマンドを実行すればいい。
curlを使う
curlは最初から使える場合が多いです。wgetよりもメジャーな印象です。wgetのような再帰的にダウンロードするオプションはなさそうなので、ダウンロードするファイルを別のファイル(下の例ではfilelist.txt)にいれておいて、順次ダウンロードしてみます。
$ while read F ; do if [ -n "$F" -a ! -f "$F" ] ; then curl --insecure https://pothos.tsbio.info/TfPT/data/filer/$F -o $F fi done <filelist.txt
認証が必要な場合
curlで認証情報を送って、返ってくるクッキーをファイル(cookie_jar)にいれて、次のアクセスではそれを送るようにします。
download.sh
COOKIE_JAR=cookie_jar CURL_OPT="--insecure" curl $CURL_OPT --cookie-jar $COOKIE_JAR \ --data-urlencode pothos_user_id="user@example.com" \ --data-urlencode password=my_secret \ -o auth.html \ https://pothos.tsbio.info/auth/login/ while read F ; do if [ -n "$F" -a ! -f "$F" ] ; then curl $CURL_OPT --cookie $COOKIE_JAR https://pothos.tsbio.info/TfPT/data/filer/$F -o $F fi done <$1
$ ./download.sh filelist.txt
オプションの説明
- –cookie-jar
- サーバーから送られてくるクッキーを保存するファイル。
- –data-urlencode
- サーバーにデータを送る。ここではログイン情報を引数として指定している。大きい場合は別ファイル(例えばpost)にいれておいて、–data-urlencode @post とすることもできる。
- -o (先頭のハイフンは一つ)
- サーバーからの返事をいれておくファイル。今回は特に必要でないので、/dev/nullでもいいが、デバッグ用に保存しておく。