Hlavní navigace

Transmission: flexibilní stahování

27. 8. 2008
Doba čtení: 6 minut

Sdílet

Na Linuxu je bittorent klientů velké množství a často se jedná o velmi podařené kousky. Jeden z nich ovšem vybočuje z řady, protože se nechová pouze jako desktopová aplikace, ale může běžet i jako daemon, a tak ho lze nasadit i tam, kde se podobná služba hodí nejvíce, na domácím routeru.

Ú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.

transmission-gtk-main

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.

transmission-gtk-torrent-info

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.

transmission-gtk-settings

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 
transmission-remote-list

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.

CS24_early

transmission-web-settings

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.

Jaký koncept stahování vám nejvíce vyhovuje?

Byl pro vás článek přínosný?

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.