]> Sergey Matveev's repositories - btrtrc.git/blob - README.md
README: Improve the cmd/torrent doc
[btrtrc.git] / README.md
1 # torrent
2
3 [![Join the chat at https://gitter.im/anacrolix/torrent](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/anacrolix/torrent?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4 [![Build Status](https://drone.io/github.com/anacrolix/torrent/status.png)](https://drone.io/github.com/anacrolix/torrent/latest)
5 [![GoDoc](https://godoc.org/github.com/anacrolix/torrent?status.svg)](https://godoc.org/github.com/anacrolix/torrent)
6 [![Coverage](http://gocover.io/_badge/github.com/anacrolix/torrent)](http://gocover.io/github.com/anacrolix/torrent)
7
8 This repository implements BitTorrent-related packages and command-line utilities in Go. The emphasis is on use as a library from other projects. It's been used 24/7 in production by a downstream, private service since late 2014.
9
10 There is support for protocol encryption, DHT, PEX, uTP, and various extensions. See the package documentation for a more complete list. There are several data storage backends provided: blob, file, and mmap, and you can write your own, such as to store data on S3, or in a database. You can use the provided binaries in `./cmd`, or use `torrent` as a library for your own applications.
11
12 Many of the sub-packages can be used for other purposes: [dht](https://godoc.org/github.com/anacrolix/torrent/dht), [bencode](https://godoc.org/github.com/anacrolix/torrent/bencode), and [tracker](https://godoc.org/github.com/anacrolix/torrent/tracker), in particular.
13
14 ## Installation
15
16 Install the library package with `go get github.com/anacrolix/torrent`, or the provided cmds with `go get github.com/anacrolix/torrent/cmd/...`.
17
18 ## Library example
19
20 There is a small example in the [package documentation](https://godoc.org/github.com/anacrolix/torrent).
21
22 ## Other projects using Torrent
23
24  * [Go Peerflix](https://github.com/Sioro-Neoku/go-peerflix)
25  * [Cloud Torrent](https://github.com/jpillora/cloud-torrent)
26
27 ## Commands
28
29 Here I'll describe what some of the provided commands in `./cmd` do.
30
31 Note that the [`godo`](https://github.com/anacrolix/godo) command which is invoked in the following examples builds and executes a Go import path, like `go run`. It's easier to use this convention than to spell out the install/invoke cycle for every single example.
32
33 ### torrent
34
35 Downloads torrents from the command-line. This first example does not use `godo`.
36
37         $ go get github.com/anacrolix/torrent/cmd/torrent
38     # Now 'torrent' should be in $GOPATH/bin, which should be in $PATH.
39         $ torrent 'magnet:?xt=urn:btih:KRWPCX3SJUM4IMM4YF5RPHL6ANPYTQPU'
40     ubuntu-14.04.2-desktop-amd64.iso [===================================================================>]  99% downloading (1.0 GB/1.0 GB)
41     2015/04/01 02:08:20 main.go:137: downloaded ALL the torrents
42     $ md5sum ubuntu-14.04.2-desktop-amd64.iso
43     1b305d585b1918f297164add46784116  ubuntu-14.04.2-desktop-amd64.iso
44     $ echo such amaze
45     wow
46
47 ### torrentfs
48
49 torrentfs mounts a FUSE filesystem at `-mountDir`. The contents are the torrents described by the torrent files and magnet links at `-torrentPath`. Data for read requests is fetched only as required from the torrent network, and stored at `-downloadDir`.
50
51     $ mkdir mnt torrents
52     $ godo github.com/anacrolix/torrent/cmd/torrentfs -mountDir mnt -torrentPath torrents &
53     $ cd torrents
54     $ wget http://releases.ubuntu.com/14.04.2/ubuntu-14.04.2-desktop-amd64.iso.torrent
55     $ cd ..
56     $ ls mnt
57     ubuntu-14.04.2-desktop-amd64.iso
58     $ pv mnt/ubuntu-14.04.2-desktop-amd64.iso | md5sum
59     996MB 0:04:40 [3.55MB/s] [========================================>] 100%
60     1b305d585b1918f297164add46784116  -
61
62 ### torrent-magnet
63
64 Creates a magnet link from a torrent file. Note the extracted trackers, display name, and info hash.
65
66     $ godo github.com/anacrolix/torrent/cmd/torrent-magnet < ubuntu-14.04.2-desktop-amd64.iso.torrent
67         magnet:?xt=urn:btih:546cf15f724d19c4319cc17b179d7e035f89c1f4&dn=ubuntu-14.04.2-desktop-amd64.iso&tr=http%3A%2F%2Ftorrent.ubuntu.com%3A6969%2Fannounce&tr=http%3A%2F%2Fipv6.torrent.ubuntu.com%3A6969%2Fannounce
68
69 ### dht-ping
70
71 Pings DHT nodes with the given network addresses.
72
73     $ godo ./cmd/dht-ping router.bittorrent.com:6881 router.utorrent.com:6881
74     2015/04/01 17:21:23 main.go:33: dht server on [::]:60058
75     32f54e697351ff4aec29cdbaabf2fbe3467cc267 (router.bittorrent.com:6881): 648.218621ms
76     ebff36697351ff4aec29cdbaabf2fbe3467cc267 (router.utorrent.com:6881): 873.864706ms
77     2/2 responses (100.000000%)
78