Torrent
Beitrag im August 2012 aktualisiert
Ohne Zweifel ist Torrent eines der besten Protokolle zum Teilen von Dateien.
Für einen Archivfreund (Data Hoarder) ist es wichtig, einen leistungsfähigen und gut konfigurierten Client zu haben, der Tausende von Torrents verarbeiten kann, ohne viel Speicher zu benötigen.
Meine Lieblings‑Clients für Linux sind Deluge, Transmission und rTorrent. Mit dem ersten hatte
ich Probleme, da er mit vielen Dateien (damals etwa 600) nicht gut zurechtkam und oft hängen blieb.
Der zweite ist einfacher, aber sehr gut, leicht zu konfigurieren und hat Oberflächen für Gnome und
KDE. In diesem Beitrag geht es um den dritten, rTorrent, den Client, den ich derzeit benutze und
der am leichtesten, leistungsfähigsten und mit den meisten Konfigurationsmöglichkeiten zu sein
scheint.
rTorrent
Installation über den Paketmanager
Installiere rTorrent wie in der Wiki beschrieben:
sudo pacman -S rtorrentDas reicht aus, um die neueste stabile Version von rTorrent zum Laufen zu bringen. Für viele ist das genug, aber ich ziehe es vor, die Entwicklerversion zu verwenden.
Ein weiterer Grund, rTorrent zu kompilieren, ist das Hinzufügen von Patches. Ich benötige ihn als Build mit der Flag
--with-xmlrpc-c.
Installation der Abhängigkeiten
Lege ein Verzeichnis für svn an:
sudo mkdir /srv/svnSetze deinen Benutzer als Eigentümer dieses Verzeichnisses:
sudo chown -R julio.users /srv/svnEntferne Programme, die per svn installiert werden:
sudo pacman -R xmlrpc-c rtorrentInstalliere CPPUNIT und libsigc++:
sudo pacman -S cppunit libsigc++Exportiere die Variable PKG_CONFIG_PATH:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig export PKG_CONFIG_PATHInstalliere xmlrpc-c:
cd /srv/svn svn co http://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c cd xmlrpc-c ./configure make sudo make install
Installation über Git
AUR
Zum Zeitpunkt der ersten Fassung dieses Beitrags gab es das Paket rtorrent-git im AUR noch nicht.
Tatsächlich wurde rTorrent damals im SVN gepflegt. Inzwischen pflegt ein großzügiges Community‑
Mitglied ein Paket unter diesem Link: https://aur.archlinux.org/packages.php?ID=53151. Einfach
herunterladen und bauen; der PKGBUILD enthält bereits die Flags, die ich verwende.
Manuell
Lege ein Verzeichnis an, um Programme zu halten, die per git geladen werden:
[root@julio-acer ~]# mkdir /srv/git/ julio@julio-acer ~> cd /srv/gitKlone das offizielle libtorrent‑Repository
julio@julio-acer /srv/git> git clone https://github.com/rakshasa/libtorrentWechsle in das Verzeichnis und kompiliere libtorrent
julio@julio-acer /srv/git> cd libtorrent julio@julio-acer /srv/git/libtorrent> ./autogen.sh julio@julio-acer /srv/git/libtorrent> ./configure julio@julio-acer /srv/git/libtorrent> make julio@julio-acer /srv/git/libtorrent> make checkInstalliere libtorrent
julio@julio-acer /srv/git/libtorrent> sudo make installExportiere die Variable PKG_CONFIG_PATH
julio@julio-acer ~> export PKG_CONFIG_PATH=/usr/local/lib/pkgconfigKlone das rTorrent‑Repository
julio@julio-acer /srv/git> git clone https://github.com/rakshasa/rtorrentKompiliere rTorrent mit der Option xmlrpc (wird von einigen Oberflächen benötigt)
julio@julio-acer /srv/git/rtorrent> ./autogen.sh julio@julio-acer /srv/git/rtorrent> ./configure --with-xmlrpc-c julio@julio-acer /srv/git/rtorrent> makeInstalliere rTorrent
julio@julio-acer /srv/git/rtorrent> sudo make install
Installation per SVN
UPDATE: Die Entwicklung von rTorrent wurde auf git umgestellt und svn ist nur noch ein Mirror – verwende daher nach Möglichkeit die oben beschriebene Git‑Installation.
Installiere libtorrent:
cd /srv/svn svn co svn://rakshasa.no/libtorrent/trunk rtorrent cd rtorrent/libtorrent ./autogen.sh ./configure make sudo make install sudo ldconfigInstalliere rTorrent:
cd ../rtorrent ./autogen.sh ./configure - -with-xmlrpc-c (beachte die zwei Bindestriche vor with) make sudo make install
Konfiguration von rTorrent
Die Konfiguration erfolgt über die Datei “~/.rtorrent.rc”. Damit lässt sich rTorrent z. B. so einstellen, dass er
- einen bestimmten Port‑Bereich verwendet,
- Download/Upload‑Geschwindigkeiten begrenzt,
- ein Verzeichnis überwacht und alle dort abgelegten
.torrent‑Dateien lädt, - nach Abschluss eines Downloads ein Skript ausführt,
- und vieles mehr …
Auf meinem Notebook funktioniert es so:
Alles wird auf einer externen Festplatte gespeichert, die immer angeschlossen ist.
Unter
/media/externo/Downloads/Torrents/rtorrent/watchgibt es weitere Verzeichnisse:- Ebooks » Enthält
.torrentvon E‑Books - Filmes » Enthält
.torrentvon Filmen - Musicas » Enthält
.torrentvon Alben - Seriados » Enthält
.torrentvon Serien - Misc » Enthält
.torrentaus allen anderen Kategorien
- Ebooks » Enthält
Diese Ordner werden von rTorrent ständig überwacht. Wenn ich dort eine .torrent‑Datei ablege,
beginnt er automatisch mit dem Download in das Verzeichnis
/media/externo/Downloads/Torrents/leeching/{Ebooks,Filmes,Misc,Musicas,Seriados}/
Nach Abschluss werden die Dateien verschoben nach
/media/externo/Downloads/Torrents/seeding/{Ebooks,Filmes,Misc,Musicas,Seriados}/
Lege die Verzeichnisse an:
mkdir \ /media/externo/Downloads/Torrents/leeching/{Ebooks,Filmes,Misc,Musicas,Seriados,Programas} \ /media/externo/Downloads/Torrents/seeding/{Ebooks,Filmes,Misc,Musicas,Seriados,Programas} \ /media/externo/Downloads/Torrents/rtorrent/sessions \ /media/externo/Downloads/Torrents/rtorrent/watch/{Ebooks,Filmes,Misc,Musicas,Seriados,Programas}
Ich habe sessions und watch ebenfalls auf der externen Festplatte belassen, damit ich sie an
einen anderen Rechner mit installiertem rTorrent anstecken und die Transfers fortsetzen kann. Wenn
ich etwas ohne die externe Platte herunterladen möchte, brauche ich eine angepasste .rtorrent.rc,
da er sonst das sessions‑Verzeichnis nicht findet und nicht startet.
Meine .rtorrent.rc findest du auf GitHub. Ein Großteil
stammt von hier.
Magnet‑Links
rTorrent 0.8.9
Du musst DHT aktivieren.
Speichere das folgende Skript irgendwo (ich nutze hier ~/Scripts/magnet_torrent.sh):
#!/bin/bash
cd /media/externo/Downloads/Torrents/rtorrent/watch/Misc
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"
julio@julio-acer ~> ~/Scripts/magnet_torrent.sh \
"magnet:?xt=urn:btih:1234567890&dn=Meu+Torrent&tr=udp%3A%2F%2Ftracker.com%3A80&tr=udp%3A%2F%2Ftracker2.com%3A80"
Dieser Befehl erstellt die Datei meta-1234567890.torrent in deinem Ordner.
RuTorrent
rTorrent ausschließlich mit der ncurses‑Oberfläche zu benutzen, ist etwas mühsam. Eine gute
Lösung ist eine Web‑GUI zu installieren.
Hier verwende ich ruTorrent, ähnlich der Oberfläche des
µtorrent, womit ich Torrents im Web verwalten kann. Dafür müssen Apache und PHP konfiguriert sein.
Teile der Schritte stammen aus dem ArchLinux‑Forum und der ruTorrent‑Wiki.
RuTorrent: Installation über den Paketmanager
Lade das im AUR verfügbare ruTorrent herunter
Lade mod_scgi
Lade ruTorrent-plugins
Installiere geoip
sudo pacman -S php-geoipÄndere die Berechtigungen des Verzeichnisses
sudo chmod 777 -R /srv/http/rutorrent/Bearbeite die Apache‑Konfiguration (/etc/httpd/conf/httpd.conf):
Listen 80 Adicione ao final da sessão LoadModule: LoadModule scgi_module modules/mod_scgi.so LoadModule php5_module modules/libphp5.soNach # Various default settings füge einen neuen Abschnitt hinzu:
# php5 Include conf/extra/php5_module.conf Adicione ao final do arquivo: SCGIMount /RPC2 127.0.0.1:5000:Schütze das ruTorrent‑Verzeichnis mit einem Passwort
Erzeuge ein Passwort mit htpasswd:
julio@julio-acer ~> htpasswd -c /home/julio/rtorrent/.htpasswd julio New password: Re-type new password: Adding password for user julioIm Apache:
<directory /srv/http/rutorrent/> AuthName "Log In" AuthType Basic AuthUserFile /home/julio/rtorrent/.htpasswd AuthGroupFile /dev/null require user julio </directory>
In
/etc/php/php.ini:In html_errors auskommentierte Optionen aktivieren:
- log_errors
- Default Value: On
Unter Dynamic Extensions aktivieren:
- extension=curl.so
- extension=pdo_sqlite.so
- extension=sockets.so
- extension=sqlite3.so
- extension=sqlite.so
- extension=xmlrpc.so
- extension=xsl.so
open_basedirähnlich setzen wie:open_basedir = /usr/bin/:/usr/local/bin/:/srv/http/:/home/:/tmp/:/usr/share/pear/:/media/externo/Downloads/Torrents
In
/etc/php/conf.d/geoip.iniauskommentierte Zeile aktivieren:extension=geoip.soServer neu starten
# /etc/rc.d/httpd restartInstallation testen unter http://localhost/rutorrent/
Installation per SVN
Einfach das Repository auschecken
cd /srv/svn svn co http://rutorrent.googlecode.com/svn/trunk/rutorrent/ rutorrentNormal konfigurieren
Plugins
ruTorrent hat einige sehr nützliche Plugins.
Ich empfehle:
Throttle
Erlaubt, Download‑ und/oder Upload‑Geschwindigkeit pro Torrent‑Gruppe zu begrenzen.
julio@acer http/rutorrent/plugins> sudo svn co http://rutorrent.googlecode.com/svn/trunk/plugins/throttle
Ratio
Erlaubt, das Seeding eines Torrents nach Erreichen eines bestimmten Ratios zu stoppen.
julio@acer http/rutorrent/plugins> sudo svn co http://rutorrent.googlecode.com/svn/trunk/plugins/ratio
Track Labels
Fügt jedem Torrent ein Label mit dem Namen des Trackers hinzu.
julio@acer http/rutorrent/plugins> sudo svn co http://rutorrent.googlecode.com/svn/trunk/plugins/tracklabel
Pyroscope
PyroScope enthält diverse CLI‑Tools und einige Patches, die
die Nutzung von rTorrent deutlich verbessern. Du musst rTorrent nicht wie oben beschrieben
installieren, denn das PyroScope‑Skript installiert eine spezielle rTorrent‑Version,
rTorrent-extended.
Pyrocore
Am einfachsten über https://aur.archlinux.org/packages/rtorrent-pyro-git/.
Eine andere einfache Variante wäre pyrocore mit pip zu installieren
(sudo pip2 install pyrocore), allerdings ist die dortige Version sehr
veraltet.
Das gilt auch für die im AUR verfügbare Version.
Es gibt eine weitere Version, die aktueller wirkt, ich habe sie aber nicht getestet.
Auf der Projektseite gibt es ein Tutorial, wie man alles aus dem Quellcode installiert. Hier erkläre ich nur kurz die Schritte; für vollständige und aktuelle Infos siehe die offizielle Seite.
Abhängigkeiten installieren
julio@acer ~> sudo pacman -S tmux python-virtualenvrTorrent-extended installieren
julio@julio-acer ~> mkdir ~/src; cd ~/src julio@julio-acer ~/src> svn co http://pyroscope.googlecode.com/svn/trunk/pyrocore/docs/rtorrent-extended julio@julio-acer ~/src> cd rtorrent-extended julio@julio-acer ~/src/rtorrent-extended> ./build.sh all julio@julio-acer ~/src/rtorrent-extended> ./build.sh extendPyroscope installieren
julio@julio-acer ~> svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/lib/pyroscopeFalls du Arch Linux verwendest, passe den Pfad zu python2 in
~/lib/pyroscope/update-to-head.shan:PYTHON=${1:-/usr/bin/python2}Skript ausführen:
julio@julio-acer ~> ~/lib/pyroscope/update-to-head.sh~/binzum$PATHhinzufügen. Füge folgende Zeile zu.zshrcund.bashrchinzu:export PATH="$HOME/bin:$PATH"Skript ausführen, um deine
.rtorrent.rcauf die neue Syntax umzustellen:julio@julio-acer ~> ~/lib/pyroscope/pyrocore/docs/rtorrent-extended/migrate_rtorrent_rc.sh ~/.rtorrent.rcErgänze in
~/.rtorrent.rc:################################# ## PyroScope SETTINGS ################################# method.insert = pyro.extended, value|const, 1 method.insert = pyro.bin_dir, string|const, method.insert = pyro.rc_dialect, string|const|simple, "execute.capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version=" method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default" import = $pyro.rtorrent_rc= schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope," # Show traffic of the last hour network.history.depth.set = 112 schedule = network_history_sampling,1,32, network.history.sample= method.insert = network.history.auto_scale.toggle, simple|private, "branch=network.history.auto_scale=,\"network.history.auto_scale.set=0\",\"network.history.auto_scale.set=1\"" method.insert = network.history.auto_scale.ui_toggle, simple|private, "network.history.auto_scale.toggle= ;network.history.refresh=" branch=pyro.extended=,"schedule = bind_auto_scale,0,0,\"ui.bind_key=download_list,=,network.history.auto_scale.ui_toggle=\""Skript ausführen, um eine Konfiguration zu erzeugen:
julio@julio-acer ~> pyroadmin --create-configInstallation testen
julio@julio-acer ~> which rtorrent /home/julio/bin/rtorrentjulio@julio-acer ~> rtorrentDer Bildschirm sollte farbig sein. Drücke
*, um zwischen collapsed view und expanded view umzuschalten.Weitere Tipps findest du hier
Hinweis: Wenn du rTorrent innerhalb von GNU Screen öffnest und er sich über die Farbanzahl deines
Terminals beschwert, füge in ~/.screenrc folgende Zeile hinzu: term screen-256color.
Ich hatte bereits Probleme mit dem Installationsskript aufgrund von Versionsinkompatibilitäten. In diesem Fall müsstest du mehrere Pakete downgraden und das Skript erneut ausführen.
.torrent mit mktorrent erzeugen
Neben dem Herunterladen ist es auch wichtig, eigene Dateien zu teilen. In der Unix‑Philosophie der Einfachheit hat rTorrent keine eingebaute Funktion zum Erstellen von Torrents.
Für diese Aufgabe verwende ich mktorrent.
mktorrent installieren
julio@julio-acer ~ $ sudo pacman -S mktorrentVerschiebe alle zu sendenden Dateien in ein eigenes Verzeichnis.
Führe den Befehl mit den passenden Parametern/Optionen aus
mktorrent -v -p -a="ANNOUNCE" -c="COMMENT" -n="NAME" -o="OUTPUT.torrent"Wobei
-vfür verbose steht-pden Torrent privat machtANNOUNCEdie vom Tracker bereitgestellte URL istCOMMENTein Kommentar zum Torrent istNAMEder Paketname im Metainfo ist; besser leer lassen, um Ordnerwechsel zu vermeidenOUTPUTder Name der .torrent‑Datei ist
Beispiel:
$ mktorrent -v -p -a "http://tracker.url/announce.php?passkey=123456xxxx&uid=xxxxx" -n "Artista - Ano - Album" -c "Original Release" -o album.torrent "Pasta_Ano - Disco" mktorrent 1.0 (c) 2007, 2009 Emil Renner Berthing Options: Announce URLs: 1 : http://tracker.url/announce.php?passkey=123456xxxx&uid=xxxxx Torrent name: Artista - Ano - Album Metafile: /media/externo/Musicas/album.torrent Piece length: 262144 Be verbose: yes Write date: yes Web Seed URL: none Comment: "Original Release" Adding cover.jpg Adding 01 - Track01.flac Adding 02 - Track02.flac Adding 03 - Track03.flac Adding 04 - Track04.flac Adding 05 - Track05.flac Adding Artist - Album.log Adding Album.cue 236381529 bytes in all. That's 902 pieces of 262144 bytes each. Hashed 902 of 902 pieces. Writing metainfo file… done.
Wenn wir denselben Befehl zum Cross‑Seeding verwenden, also um dieselben Dateien auf verschiedenen Trackern zu teilen, gibt rTorrent den Fehler “Info hash already used by another torrent” aus. Um das Problem zu lösen und unterschiedliche Hashes zu erzeugen, kann man Folgendes tun:
Beim Erstellen der zweiten .torrent eine Datei hinzufügen oder ändern
Mit
-leine andere Stückgröße festlegen. Beispiel:mktorrent -v -p -a "http://tracker.url/announce.php?passkey=123456xxxx&uid=xxxxx" -l 19 -o album_tracker2.torrent "Pasta_Ano - Disco"
Das verwendet 512 KB pro Stück.
ruTorrent erlaubt auch eine Multi‑User‑Konfiguration, wobei die Dateien jedes Nutzers in
spezifischen Verzeichnissen liegen (rutorrent/share/users/USERNAME/settings/).
iPhone:
- http://code.google.com/p/torrentouch/
- http://code.google.com/p/rtorrent-for-iphone/
- http://kramerican.dk/index.php?page=rtorrent-for-iphone