суббота, 28 июля 2007 г.

lftp. Usage.

Собственно subj, иногда приходится пользоваться, иногда приходится пользоваться консольными(если у кого возникнет желание поделится чем-то интересным про GUI-клиенты, You are wellcome. Из виденных мной мне не понравился ни один из них). Стоит про это знать. Консольных клиентов несколько - самый простой ftp - он есть почти везде, немного отличается в реализациях в разных системах, из более удобных продвинутых есть lftp и ncftp. Про второй пока промолчу - я им почти не пользовался, про lftp пойдет речь ниже.

1) Подключение к серверу, можно несколькими способами. Если вызываем lftp вот так:


lftp ftp.domain.com


подключается под анонимусом(anonymous) к ftp.domain.com. Можно указать логин и/или пароль при подключении:


lftp login:password@ftp.domain.com

подобная нотация будет работать для бОльшинства других в т.ч. и GUI клиентов.

Еще один способ, уже через внутреннюю команду open, в lftp. Запускаем lftp без параметров:


[vasiliy@beezir ~]$ lftp
lftp :~>

и потом уже в этой оболочке пишем:


lftp :~> open diesel@192.168.10.1
Password:
lftp diesel@192.168.10.1:~> ls


удобно если вдруг во время работы вы "вдруг" передумали и захотели подключится к другому серверу.

Стоит заметить, что lftp по-умолчанию подключается не сразу, а начинает подключатся когда ему дадут первую команду, т.е. чтобы проверить правильность логина с паролем лучше сразу же скомандывать ls.

2) Скачивание и основные команды.
Основные команды примерно такие же как в shell'е, т.е. ls, cd работают как обычно. Так же работает автодополнение всего по Табу.

Для скачивания есть несколько команд, мы посмотрим на две: mget и mirror. Через встроенный хэлп можно получить справку по обеим командам. Для того чтобы получить список вообще всех доступных команд набираем просто help, для конкретной команды - help commandname, e.g.: help mget.

mget filename позволяет скачать файл filename, опция -c как и в в wget'е позволяет "докачать" файл.

mirror dirname позволяет скачать директорию. mirror -c - докачать директорию.

О том как залить файл на сервер с помощью mput и того же mirror предлагаю разобраться самим.

3) конфигурация.
конфигурационный файл .lftprc, предсталяет собой просто команды lftp которые даются ему перед запуском. Основные установки производятся командой set (да-да, про них тоже есть в help'е). Дома у меня там пару строк, позволяющих лазить свободно на виндовые ФТП, с русскими именами файлов:


set ftp:charset cp1251
set mirror:set-permissions off
set ftp:use-telnet-iac no


а так же несколько алиасов, команд, для более быстрого набора этого дела:


alias 5.7 open 192.168.5.7
alias 5.6 open 192.168.5.6
alias 5.12 open 192.168.5.12
alias 9.87 open 192.168.9.87
alias kyvaldis open 192.168.61.193
alias localhost open 127.0.0.1

т.е. вместо того чтобы писать например open 127.0.0.1 я могу просто написать localhost.

4) advanced. У lftp несколько полезных CLI-опций, связанных с встраиванием этого всего в скрипты(вернее исполнение lftp-скриптов):

-e commands Execute given commands and don’t exit.
-f script_file Execute commands in the file and exit
-c commands Execute the given commands and exit


Вот такие основы работы с этим маленьким, простым и удобным фтп-клиентом.

2 комментария:

Анонимный комментирует...

Гы, неплохая заметка, про алиасы не знал, удобно :)

altutov комментирует...

Я так же проглядел возможность алиосов в своем конфиге. Раньше для посящения одних и тех же серваков пользовался midnight commander`ом с его возможностью закладок (вот тока серваки с виндовой кодировкой по умолчанию без всяких там патчей не понимает). Так что благодаря вашей статейки от MC теперь откажусь, по крайней мере в качестве ftp-клиента. Единственной возможности которой я пока не нашел в lftp -это при многопоточной загрузки файла с помощью pget -n(число потоков) нет возможности продолжения закачки при резком обрыве соединения. Может это и не часто используемая фича, но для выкачки сильно крупных файлов (типа DVD) она просто таки необходима! Замена этому нашел только одну curl -r 0-1000 -o file.iso.part1 $url&
curl -r 1000-2000 -o file.iso.part2 $url& , и затем объединением полученных файлов в один cat file.iso.part? >file.iso
Если кто знает можна ли нечто подобное сделать в lftp, напишите плиз.