Úvod
Ač říkám, že se nejvíce hodí na domácí router, tak tím nemyslím, že by nešel nasadit i jako desktopová aplikace. Transmission je lehký bittorent klient napsaný v C, jehož vývoj se vede směrem k nižším systémovým nárokům. Poslední verze je 6 dní stará. Za prázdniny klient prakticky kompletně změnil tvář a dostal úplně nové funkce. Tento článek se bude věnovat verzi 1.33, která vyšla 21. srpna 2008.
Používám Transmission více než 3 měsíce a skok, který za tu dobu udělal, je opravdu velký. Ovládání přes příkazovou řádku je teď mnohem pohodlnější. Odstranila se nepohodlná identifikace torrentu přes hashe a konečně lze pracovat s každým stahovaným souborem zvlášť.
Vlastnosti které Transmission poskytuje bych shrnul do následujícího seznamu:
- Šifrovaná spojení
- Stahování pouze částí torrentů
- Black list
- UPnP a NAT-PMP port forwarding
- Nastavení rychlosti globální i pro konkrétní torrent
- Peer exchange – výměna peerů
- IPv6
- Multiplatformní – Mac OS X a Linux
- Vzdálená správa
Transmission se skládá z několika samostatných programů:
- transmission
- transmissioncli
- transmission-daemon
- transmission-remote
- transmission-proxy
První program je jednoduché GTK rozhraní, které poskytuje dostatečné množství možností pro správu torrentů a využívá většiny funkcí. Program transmissioncli by se dal nazvat klientem na jedno použití, protože mu stačí na příkazové řádce dát do parametru soubor s torrentem případně nastavení jako rychlost stahování/sdílení, šifrování atd. a stahování začne. Programy transmission-remote a transmission-daemon slouží na stahování torrentů na pozadí. Poslední program je transmission-proxy, ten je určen pro jednoduché zprostředkování daemona vnějšímu světu.
První tři programy slouží ke stahování. Pokud se uživatel rozhodne stahovat něco přes transmissioncli, ale později rozhodnutí změní a chce GTK rozhraní, stačí v tomto rozhraní znovu přidat torrent a nasměrovat cílový adresář na stejný jako měl transmissioncli. Takhle lze přehazovat stahovaná data mezi všemi třemi možnostmi.
GTK rozhraní
GTK rozhraní je velmi jednoduché a poskytuje kompletní informace o torrentech jako velikost souborů, stav stažení, informace o peerech, statistiky, dobu spuštění, odhadovanou dobu ukončení a mnoho dalšího. Přidávání torrentů je dostupné pouze přes stažení torrent souboru externím programem a následným vložením do transmission. Například KTorrent umí stáhnout torrent soubor ze zadané adresy, což mně osobně přijde mnohem pohodlnější. V GTK rozhraní je možné spustit webového rozhraní, které rozebírám níže. Není tak problém vzdáleně kontrolovat stav stahování.
Transmission snaží zapadnout do vzhledu systému jak je to jen možné. Rozhraní pro MAC OS X je napsáno v Objective-C. Pro Linux se používá GTK.
Daemon a remote
Tato kombinace mi poskytuje přesně to co od bittorent klienta očekávám a stala jasnou volbou.
Příklad spuštění daemona a nastavení parametrů
Spuštění transmission-daemon je jednoduché a pokud nepotřebujeme žádné zvláštní parametry stačí zadat do příkazové řádky název programu. Většinou se ale další parametry hodí.
-h --help Nápověda
-a --acl <list> Access Control List - odkud bude k daemonu přístup
-b --blocklist Zapnout peer blocklists
-B --no-blocklist Vypnout peer blocklists
-f --foreground Spustit na příkazové řádce
-g --config-dir <path> Kde hledat konfigurační soubory
-p --port <port> TCP Port (Výchozí: 9091)
-t --auth Vyžadovat přihlášení
-T --no-auth Nevyžadovat přihlášení
-u --username <username> Uživatelské jméno pro přihlášení
-v --password <password> Uživatelské heslo pro přihlášení
-w --download-dir <path> Kam ukládat stahovaná data
Já spouštím daemona následujícím způsobem:
# spustím daemona a jako pracovní adresář nastavím /home/samba
/usr/bin/transmission-daemon -w /home/samba/
sleep 3 # počkám 3 vteřiny
# a nastavím omezení rychlosti
/usr/bin/transmission-remote -d 160 -u 160
Init script
V mém Gentoo mi moc dobře nefungoval init script, takže jsem si ho upravil podle sebe. Pro ostatní distribuce půjde jednoduše přizpůsobit.
#!/sbin/runscript
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-p2p/transmission/files/transmission-daemon,v 1.1 2008/05/13 02:54:28 compnerd Exp $
# závislosti na jiných init skriptech (specialita Gentoo)
depend() {
need net
}
# funkce pro startování
start() {
ebegin "Starting transmission-daemon"
PID=`pidof transmission-daemon`
if [ ! "$PID" ]; then
/usr/bin/transmission-daemon -w /home/samba/
sleep 3
/usr/bin/transmission-remote -d 160 -u 160
fi
eend $?
}
# funkce pro zastavení
stop() {
ebegin "Stopping transmission-daemon"
PID=`pidof transmission-daemon`
if [ "$PID" ]; then
kill $PID
fi
eend $?
}
# restartovací funkce
restart() {
ebegin "Restarting transmission-daemon"
svc_stop
svc_start
eend $?
}
Práce s transmission-remote
Pokud se rozhodneme zasáhnout do stahovaných torrentů nebo přidat nový, použijeme k tomu program transmission-remote. Ten má následující parametry:
-h --help Nápověda
-a --add Přidat torrent
-b --debug Vypsat ladící informace
-d --downlimit <speed> Nastavení maximální rychlosti stahování v KB/s
-D --no-downlimit Vypnout limit na stahování
-er --encryption-required Vyžadovat od peerů šifrování
-ep --encryption-preferred Preferovat peery podporující šifrování
-et --encryption-tolerated Preferovat peery nepodporující šifrování
-f --files Vylistovat soubory patřící k torrentu
-g --get <files> Označit soubory pro stažení
-G --no-get <files> Označit soubory, které se nemají stahovat
-i --info Zobrazit detaily o vybraném torrentu
-l --list Vylistovat stahované torrenty
-m --portmap Povolit portmapping přes NAT-PMP nebo UPnP
-M --no-portmap Vypnout portmapping
-n --auth <auth> Jaké uživatelské jméno se má použít pro přihlášení
-p --port <port> Port pro příjem dat od peerů (Výchozí: 51413)
-ph --priority-high <files> Nastavit prioritu high na vybrané soubory soubory
-pn --priority-normal <files> Nastavit prioritu normal na vybrané soubory soubory
-pl --priority-low <files> Nastavit prioritu low na vybrané soubory soubory
-r --remove Odstranit torrent ze seznamu
-s --start Spustit stahování/sdílení torrentu
-S --stop Zastavit stahování/sdílení torrentu
-t --torrent <torrent> Vybrat torrent, se kterým se bude pracovat
-u --uplimit <speed> Nastavení maximální rychlosti odesílání v KB/s
-U --no-uplimit Vypnout limit na odesílání
-v --verify Ověřit vybraný torrent
-w --download-dir <path> Nastavit adresář, kam se budou stahovat torrenty
-x --pex Povolit peer exchange (PEX)
-X --no-pex Vypnout peer exchange (PEX)
Práce s torrenty se od verze 1.22 změnila. Už se nepoužívají hashe, ale vybírá se index torrentu. Takže když chceme pracovat s torrentem s ID 1, napíšeme transmission-remote -t 1
a pak přidáme přepínač, kterým určíme co se s torrentem má udělat. ID je unikátní a stoupá o jedničku s každým přidaným torrentem.
Získání seznamu stahovaných torrentů
misha ~ # transmission-remote -l
ID Done ETA Up Down Ratio Status Name
1 100% Done 0.0 0.0 0.0 Seeding archlinux-2008.06-core-x86_64.iso
2 27% 1 days 2.1 30.0 0.3 Downloading livedvd-amd64-installer-2007.0
Přidání torrentu
misha ~ # transmission-remote -a /home/samba/torrents/archlinux-2008.06-core-x86_64.iso.torrent
localhost:9091 responded: "success"
Smazání torrentu
misha ~ # transmission-remote -t 3 -r
localhost:9091 responded: "success"
Stopnutí/Spuštění torrentů
# zastavit vše
transmission-remote -t all -S
# spustit vše
transmission-remote -t all -s
# zastavit konkrétní torrent
transmission-remote -t <ID> -S
# spustit konkrétní torrent
transmission-remote -t <ID> -s
Webové rozhraní
Webové rozhraní je založené na Ajaxu. Graficky je sice velmi povedené, ale ještě obsahuje některé vizuální nedostatky např. kolem oken s nastavením, které nemají rámečky a působí dost nevhodně. Svoji funkci ale plní a poskytuje základní statistiku o stahovaných torrentech s možností přidávání dalších. Stejně jako u GTK varianty mi tu chybí přidávání torrentů pouhým zadáním URL. Proto jsem se rozhodl vytvořit si webové rozhraní vlastní, které obsahuje funkce, které potřebuji. S transmission je to hračkou.
CLI
Jak už jsem zmínil, jedná se o torrent klienta na jedno použití, který se hodí pro rychlé stahování, které netrvá delší dobu. Stahování lze později navázat opětovným spuštěním programu se stejnými parametry.
Použití
misha ~ # transmissioncli -w /home/samba/ /home/samba/torrents/archlinux-2008.06-core-x86_64.iso.torrent
Transmission 1.33 (6608) - http://www.transmissionbt.com/
Seeding, uploading to 0 of 0 peer(s), 0 KB/s [0.00]
Závěr
Dříve jsem používal KTorrent a plně mi vyhovoval. Později jsem se začal pohybovat mezi školou a domovem, kde jsem používal vždy jiný stroj. Tyto problémy transmission na routeru dokonale vyřešilo. Transmission se za poslední 2 měsíce dostalo na velmi vysokou úroveň a může se měřit i s klientama jako je Ktorrent. Jako jeden z mála klientů, Transmission podporuje IPv6. O úspěchu se dá i mluvit ve spojení s Ubuntu, které si ho vybralo jako výchozího bittorrent klienta.