该存储库在 Go 中实现了 BitTorrent 相关的包和命令行实用程序。重点是用作其他项目的库。自 2014 年底以来,下游服务一直在生产中 24/7 全天候使用它。该实现是专门为探索 Go 的并发功能而创建的,并包括直接从 BitTorrent 网络传输数据的能力。为此,它支持搜索、预读和其他功能,通过各种 Go 惯用的io
包接口公开 torrent 及其文件。这也通过 torrentfs 得到了证明。
支持协议加密、DHT、PEX、uTP 和各种扩展。提供了多种数据存储后端:blob、file、bolt、mmap 和 sqlite 等。您可以编写自己的数据来存储数据,例如在 S3 上或数据库中。
一些值得注意的可用于其他目的的包依赖项包括:
使用go get github.com/anacrolix/torrent
安装库包,或使用go install github.com/anacrolix/torrent/cmd/...@latest
提供的命令。
包文档中有一些小示例。
已知的公共项目中有多个 Web 前端、站点、Android 客户端、存储后端和支持服务:
有关项目的沟通主要通过讨论和问题跟踪器进行。
这里我将描述./cmd
中的一些包的作用。请参阅安装以使它们可用。
torrent
torrent download
从命令行下载种子。
$ torrent download 'magnet:?xt=urn:btih:KRWPCX3SJUM4IMM4YF5RPHL6ANPYTQPU'
... lots of jibber jabber ...
downloading "ubuntu-14.04.2-desktop-amd64.iso": 1.0 GB/1.0 GB, 1989/1992 pieces completed (1 partial)
2015/04/01 02:08:20 main.go:137: downloaded ALL the torrents
$ md5sum ubuntu-14.04.2-desktop-amd64.iso
1b305d585b1918f297164add46784116 ubuntu-14.04.2-desktop-amd64.iso
$ echo such amaze
wow
torrent metainfo magnet
从 torrent 文件创建磁力链接。记下提取的跟踪器、显示名称和信息哈希。
$ torrent metainfo testdata/debian-10.8.0-amd64-netinst.iso.torrent magnet
magnet:?xt=urn:btih:4090c3c2a394a49974dfbbf2ce7ad0db3cdeddd7&dn=debian-10.8.0-amd64-netinst.iso&tr=http%3A%2F%2Fbttracker.debian.org%3A6969%2Fannounce
有关其他元信息相关命令,请参阅torrent metainfo --help
。
torrentfs
torrentfs 在-mountDir
处挂载 FUSE 文件系统。内容是由 torrent 文件和-metainfoDir
处的磁力链接描述的 torrent。仅根据需要从 torrent 网络获取读取请求的数据,并将其存储在-downloadDir
中。
$ mkdir mnt torrents
$ torrentfs -mountDir=mnt -metainfoDir=torrents &
$ cd torrents
$ wget http://releases.ubuntu.com/14.04.2/ubuntu-14.04.2-desktop-amd64.iso.torrent
$ cd ..
$ ls mnt
ubuntu-14.04.2-desktop-amd64.iso
$ pv mnt/ubuntu-14.04.2-desktop-amd64.iso | md5sum
996MB 0:04:40 [3.55MB/s] [========================================>] 100%
1b305d585b1918f297164add46784116 -