Amazon S3とBitTorrent を使用した大容量ファイルのダウンロード

https://webtorrent.io


Torrentと聞いただけで不正ダウンロードを連想される方がいると思いますが、

Torrentの技術自体は不正でも悪いことでも無いです。

P2P(Peer to Peer(ピア・トゥ・ピア または ピア・ツー・ピア))とよばれる技術です。

クライアント-サーバ方式のようにアクセスが一極集中しない優れた方法です。

実際LinuxディストリビューションのOSイメージの配布はTorrentでダウンロードできます。

例:



クラウドストレージの定番Amazon S3はデフォルトでBitTorrentに対応しています。

http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/S3TorrentPublish.html


例:

http://{バケット名}.s3.amazonaws.com/test.dmg?torrent

にアクセスするとtest.dmg.torrentファイルが入手できます。


注記

awsのBitTorrent は、容量が 5 GB 未満のオブジェクトについてのみ取得できます。



この.torrentファイルをtorrentクライアントソフトから使用してダウンロードするのが通常ですが、今回webtorrentとという新しいプロジェクトがあったので使ってみました。


macOSにて1Gのダミーデータを作りました。


Macユーザーならおなじみの.dmgというイメージファイルです。

awsのS3へバケットを作ってアップロードしました。


ファイルに読み取りの権限を与えます。


誰でもアクセスできるようになりました。


赤枠の部分がファイルまでのURLです。



●webtorrent-cliの入手

nodejsをインストールしてください。

centos7の例:

sudo yum install epel-release

sudo yum install nodejs npm

公式ページにかいてあるようにインストール

npm install webtorrent-cli -g

webtorrent --helpで以下の画面がでればOKです。

まず、wgetにて.torrentファイルを入手しましょう!

wget https://s3-ap-northeast-1.amazonaws.com/{バケット名}/test.dmg?torrent

または、

wget http://{バケット名}.s3.amazonaws.com/test.dmg?torrent


S3のファイルまでのURLへ?torrentをつければOKです。

ファイル名がtest.dmg?torrentだったのでtest.dmg.torrentへ変更しました。


$ webtorrent ./test.dmg.torrent

でダウンロード開始です。

ダウンロードできたら、チェックサムを比べてダウンロード漏れがないか見てみます。


macOSのチェックサム



ダウンロードした別クライアントのチェックサム

同じなので完全にダウンロードできています。

GUIの方がいいなという方は公式にDesktop用があります。




webtorrentはWebRTCを使った新しいP2Pで動画のVOD配信もtorrentでできるようなので

チャレンジしましたができませんでした。とりあえず効率のいいダウンロードに使えるので記事にしてみました。


公式ページではP2PでのVOD動画が見れます。