Hlavní navigace

LFTP: sofistikovaný klient pro přenos souborů

20. 10. 2011
Doba čtení: 6 minut

Sdílet

Existuje řada desktopových aplikací pro přenos souborů ze serveru či na server. Někdy ale nechceme použít klikací nástroj a naopak by se nám hodilo něco jednoduchého, šikovného a řádkového. Právě pro zájemce o podobný software je tu LFTP. Nenechejte se ale zmást jeho názvem, neumí zdaleka jen FTP.

Přenášet občas soubory na nějaký ten server musí občas každý. Ať už spravujete web, chcete si stáhnout novou linuxovou distribuci či potřebujete někam nahrát sbírku fotek z dovolené. Jsme na serveru o Linuxu a dalších systémech unixového typu, kde se uživatelé nelekají řádkového programu a vědí, že dokáže leckdy nabídnout mnoho.

Z výše uvedeného jste už asi pochopili, že se jedná o konzolového klienta pro přenos souborů. Podle názvu by se mohlo zdát, že umí jen protokol FTP, který je nezabezpečený a dnes se již doporučuje ho nepoužívat. Přesto je realita taková, že řada uživatelů i správců webů FTP jednoduše využívá denně. LFTP ale umí mnohem víc než jen FTP, jak si ukážeme dále.

Co tedy umí?

LFTP umí samozřejmě přenášet soubory. Využít k tomu umí následující protokoly:

  • FTP
  • FTPS (FTP se SSL)
  • SFTP (přenos po SSH)
  • HTTP
  • HTTPS
  • WebDAV (částečně)
  • BitTorrent

Kromě toho má klient ještě celou řadu dalších schopností:

  • umí IPv6
  • umí FXP přenos (mezi dvěma servery)
  • umí mirroring zdrojů
  • má vlastní frontu úkolů
  • umí aliasy
  • umí záložky (oblíbené akce)
  • dá se využít ve skriptech
  • a mnoho dalšího

Velmi příjemné je, že klient dokáže doplňovat příkazy a názvy souborů pomocí klávesy Tab. Stejně tak si pamatuje historii příkazů, která se zachová i mezi jednotlivými spuštěními LFTP. V historii se pohybujeme klasicky pomocí šipek nahoru a dolů. Dokonce je možné použít ctrl+r pro vyhledávání příkazů v historii pouhým zápisem. Práce s programem je tedy přívětivá a velmi připomíná práci na konzoli.

Praktické použití

Poznámka: V článku je třeba rozlišit příkazovou řádku systému a LFTP. Proto ta systémová začíná znakem $ a řádka LFTP znakem  >.

Volání program je velmi jednoduché, bude tedy stačit jen několik příkladů pro různé servery:

$ lftp ftp://ftp.server.cz
$ lftp ftp://franta@ftp.server.cz
$ lftp sftp://jirka@server.nekde.cz
$ lftp http://releases.ubuntu.com

Zvlášť poslední zmíněný příklad je zajímavý – vyzkoušejte si ho. Na tomto serveru (a na dalších) je povolen directory listing, takže aplikace dokáže přes HTTP procházet adresářovou strukturu serveru. Ve finále se to chová velmi podobně jako například anonymní FTP.

Samozřejmě nás bude nejvíce zajímat práce se samotnými soubory. Stažení souboru provedeme příkazem:

> get index.html

Naopak nahrání analogickým

> put styl.css

Můžeme také udělat kopii (mirror) celého adresáře. Pokud chceme stahovat, stačí zavolat jednoduché

> mirror balicky

Pokud naopak chceme celý adresář z lokálního disku dostat na server, zavoláme

> mirror -R dokumenty

Řetězení příkazů

Pokud bychom tady skončili, zůstal by LFTP jen jednoduchým řádkovým klientem, který snad vyniká jen podporou více různých protokolů. LFTP se ale chová jako klasický unixový shell, má řadu nadstandardních příkazů, které je možné klasicky sdružovat. Například:

> ls | less
> ls | grep ubuntu

Události na pozadí

Stejně tak je možné události odložit do pozadí a připravovat si další. Například:

> get ubuntu-11.10-desktop-i386.iso &
[0] get ubuntu-11.10-desktop-i386.iso &
    „ubuntu-11.10-desktop-i386.iso“ na 0

Vznikne tak nový proces, který je automaticky odeslán na pozadí. Přenos běží a my si můžeme seznam úloh vypsat pomocí příkazu  jobs:

> jobs
[0] get ubuntu-11.10-desktop-i386.iso
    „ubuntu-11.10-desktop-i386.iso“ na 1849088 (0%) 509.4 kB/s zbývá: 23m [Přijímají se data]

Pokud chceme tento proces přenést do popředí, použijeme příkaz fg (jako foreground). Proč ho zase odešleme pomocí kombinace ctrl+z. Pokud chceme některý proces zabít, použijeme tradičně příkaz kill, následovaný číslem procesu (viz výpis jobs). Pokud chceme zrušit vše, použijeme  kill all.

Můžeme také použít více příkazů, které budou probíhat sériově za sebou. To celé je zase možné odeslat do pozadí, takže tím vlastně vytvoříme jednoduchý skript. K propojení slouží závorky.

> (cd releases/oneiric && get ubuntu-11.10-desktop-i386.iso) &

Záložky (oblíbené)

Už jsme zmínil, že LFTP umí ukládat oblíbené weby. To provedeme jednoduše tak, že se na spojeném serveru napíšeme

> bookmark add ubuntu

Tím vznikne nová záložka s názvem „ubuntu“. Pokud se budeme chtít příště na server připojit, bude nám stačit LFTP spustit s jeho názvem

$ lftp ubuntu

Nebo jej spustit jen příkazem lftp a pak napsat

> open ubuntu

Aliasy

Aliasy umožňují vytvořit nové pojmenování pro příkaz nebo pro celou jejich řadu

> alias dir ls
> alias less more
> alias zless zmore
> alias bzless bzmore
> alias reconnect "close; cache flush; cd ."

Fronty

LFTP má také perfektní systém front, kdy je možné připravit předem seznam událostí, které chceme provést. Napoví konkrétní příklad:

> queue stop
> queue get ubuntu.iso
> queue mirror balicky
> cd zalohy
> queue mirror -R zaloha.tar
> queue start

Na začátku jsme zastavili neexistující frontu. To je potřeba, protože jinak by po zadání druhého řádku začala fronta probíhat a my bychom měli obsazenou konzoli a nemohli bychom nic provádět. Poté nakrmíme seznam samotnými akcemi a spustíme jejich provádění.

Všimněte si čtvrtého řádku příkladu. Mezi zadáním jednotlivých kroků jsem změnil adresář, protože chci zálohy nahrát do speciálního adresáře. LFTP si při zadání položky do fronty pamatuje aktuální adresář a pak mezi nimi před příslušnými kroky přepíná. Je tak možné udělat opravdu hromadu různých akcí v mnoha různých adresářích.

Sloty

Pokud chcete udržovat spojení na více různých serverů, můžete využít slotů. Můžete si tak vlastně otevřít více virtuálních terminálů a poté mezi nimi přepínat. Příklad opět vše vysvětlí:

> slot ubuntu
> open releases.ubuntu.com
> slot debian
> open ftp.debian.org
> slot ubuntu

Jak vidíte, vytvořili jsme si postupně dva sloty a do nich otevřeli dvě nezávislá spojení. Poté jsme se přepnuli do prvního z nich. Můžeme tak nezávisle stahovat třeba ze dvou serverů a na jednom provádět nějaké další akce.

Skriptování

Jak vidíte, možnosti jsou široké a LFTP má poměrně sofistikovaný komunikační jazyk. Pomocí něj si můžeme vytvořit vlastní skripty. Ty se zapisují klasicky do textových souborů – jeden příkaz na řádek. Například:

$ cat skript
open release.ubuntu.com
cd releases/oneiric/
get ubuntu-11.10-desktop-i386.iso
get ubuntu-11.10-desktop-amd64.iso
exit

Poté skript jednoduše zavoláme pomocí

$ lftp -f skript

a on se provede stejně, jako bychom jednotlivé řádky vkládali do konzole programu.

BitTorrent

Asi byste mi neodpustili, kdybych na začátku zmínil BitTorrent a pak k němu nenapsal víc. Pro jeho spuštění je třeba nejprve stáhnout příslušný torrent soubor a poté na něj zavolat příkaz torrent. Příklad:

root_podpora

> open ubuntu
> cd releases/oneiric
> get ubuntu-11.10-desktop-i386.iso.torrent
> torrent ubuntu-11.10-desktop-i386.iso.torrent
ubuntu-11.10-desktop-i386.iso: dn:13402112 433.6 kB/s up:0 complete:5/1391 (0%) zbývá: 27m

Příkaz je vlastně náhradou get, takže je možné jej vložit do fronty, přidat do skriptu či nechat běžet na pozadí.

Šikovný a užitečný

Možnosti LFTP jsou skutečně široké, popsali jsme jen část z nich. Další můžete objevovat v rozsáhlé manuálové stránce. Pokud se nebojíte řádky, můžete jako já LFTP používat. Nebo používáte jiný program? Jaký?

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

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.