16+
ComputerPrice
НА ГЛАВНУЮ СТАТЬИ НОВОСТИ О НАС




Яндекс цитирования


Версия для печати

Модуль поиска не установлен.

lftp - программа для передачи файлов

22.07.2005

Владимир Царьков

На сегодняшний день протокол FTP (File Transfer Protocol) используется очень активно, он позволяет получать доступ к данным, хранящимся на удаленном компьютере в локальной сети или Интернет. Представим себе, что вы web-мастер и существует веб-узел (сайт), поддержкой которого вы занимаетесь. Одной из ваших обязанностей является обновление размещаемой там информации. FTP вполне подходит для реализации данной задачи.

В большинстве случаев пользователь не имеет возможности напрямую взаимодействовать с FTP, но cуществует большое количество программ, позволяющих работать с ним [для более подробного знакомства с этим протоколом обратитесь к документу RFC (Request for Comments) 959], одна из них называется lftp, она входит практически во все GNU/Linux дистрибутивы, предоставляя пользователю широкие возможности: с ее помощью можно создавать сетевые соединения, причем не только через FTP, но и FTPS, HTTP, HTTPS, HFTP, FISH, SFTP. Итак, как вы, уважаемые читатели, уже, очевидно, догадались, целью данной статьи является описание приемов работы с программой lftp.

Максимальное удовольствие от работы с программным обеспечением достигается лишь тогда, когда произведена его ручная настройка. Все же удержусь от соблазна сразу перейти к описанию содержимого /etc/lftp.conf. Думаю, более целесообразно будет сначала рассмотреть команды, поддерживаемые lftp.

В первую очередь, необходимо узнать адрес компьютера, в нашем случае, сервера, к которому будет осуществляться подключение, учетное имя и пароль для доступа к файлам. Готово. Теперь, воспользовавшись утилитой kppp, wvdial или самодельным скриптом, подключимся к Интернет. Соединение установлено, можно запускать lftp. В терминале вводим следующую строку:

# lftp
(знак "#" не является частью команды, а лишь обозначает начало строки с командой).

Перед нами появилось приглашение "lftp :~> _".

# open myserver

myserver - адрес сервера, записаннный согласно стандарту адресации IPv4, или доменное имя узла. Стандарт IPv6 пока применяется достаточно редко, его широкое использование еще впереди.

Идем дальше, для получения доступа к файлам используем учетное имя и пароль:

# user mylogin
mylogin - учетное имя на сервере

После этих действий появится приглашение ввести пароль, что мы и сделаем. Не пугайтесь того, что при наборе пароля не видно ни одного из введенных символов, так и должно быть, это сделано в целях безопасности: вдруг кто-нибудь следит за экраном вашего монитора.

Если все данные были указаны корректно, lftp подключится к серверу и будет получен доступ к содержимому вашего каталога(ов) (рис. 1).

Теперь перейдем к рассказу о том, с помощью каких команд можно работать с содержимым каталога(ов). В первую очередь, давайте скажем:

# ls -al

При этом будет выведен полный список файлов текущего каталога.

# cd mydir

Переход в нужный каталог, в данном случае, "mydir".

# cd ../

Переход на уровень вверх.

# cat myfile(s)

Просмотр содержимого файла(ов) myfile(s). К примеру, если мы скажем "cat *.html", то по адресу стандартного вывода (то есть, в большинстве случаев, на экран монитора) будет отправлено содержимое всех файлов в формате html, находящихся в текущем каталоге (рис. 2).

# debug [-o filename] level|off

level - числовое значение, отвечающее за полноту отладочной информации
off - используется только в том случае, если требуется отключить вывод отладочной информации

Чтобы перенаправить отладочную информацию в "filename", используйте опцию "-o". Ниже приведен пример:

# debug -o /home/user/file.txt 10

После выполнения указанной в примере команды, запись отладочных данных будет производиться в "/home/user/file.txt", уровень полноты информации равен десяти (рис. 3).

# mkdir catalog

Создать новый каталог с именем "catalog".

# rmdir catalog

Удалить каталог "catalog".

# rm filename
filename - имя удаляемого файла

"Rm" не поддерживает использование шаблонов, но существует команда "mrm", в качестве аргумента имеющая возможность взять шаблон. Выглядит это примерно так:

# mrm *.html
# mv file1 file2

"Mv" позволяет переименовать "file1" в файл "file2".

# pwd
# lpwd

С помощью команд "pwd" и "lpwd" можно узнать имя текущего каталога на удаленной и на локальной машине соответственно.

# lcd mydir

Смена локального каталога (переход в "mydir"), причем имя предыдущего каталога сохраняется как "-", таким образом, чтобы сделать шаг назад, можно сказать "lcd -".

# chmod mode file(s)

С помощью команды "chmod" можно изменять код режима доступа к файлу. "Mode" задает спецификацию прав доступа к file(s). Например, для CGI (Common Gateway Interface) скриптов она должна быть определена как 755. То есть, чтобы сделать CGI скрипт исполняемым, нужно сказать:

# chmod 755 myfile.cgi

Код режима доступа - объемная тема, ее освещение не входит в задачи данной статьи.

Теперь к вопросу копирования файлов с сервера на локальную машину (ваш компьютер) и наоборот.

# get filename
filename - имя файла, который вы хотите скопировать с сервера

Пример:

# get README -o debian.README
# get README -o debian.README README.mirrors -o debian.mirrors

Как вы, вероятно, догадались, опция "-o" позволяет задать новое локальное имя для скачиваемого файла.

# pget [-n conn] filename
conn - количество используемых соединений
filename - имя скачиваемого файла

"Pget" предоставляет возможность ускорить процесс скачивания за счет увеличения числа используемых соединений. Данный подход создает сильную нагрузку на сеть, поэтому его использование не всегда оправдано.

Команда "get" не обрабатывает шаблоны. Представьте, что вам нужно скопировать с сервера несколько десятков файлов. Согласитесь, было бы не очень удобно вручную формировать запрос GET для каждого из скачиваемых документов. На помощь приходит "mget", она может брать сразу несколько файлов согласно указанному шаблону.

# mget [-d] files
files - шаблон для группы файлов

Опция "-d" говорит "mget" о необходимости создания каталогов с теми же именами, что и у скачиваемых файлов, при этом перенос файлов осуществляется не в текущий локальный каталог, а в одноименные свежесозданные.

В случаях, когда нужно скопировать не отдельный файл или группу файлов в соответствии с шаблоном, а целый каталог со всем его содержимым, можно использовать команду "mirror".

# mirror rdir ldir
# mirror -R ldir rdir
# mirror
# mirror -R

Если "-R" отсутствует, то серверу направляется запрос GET, то есть мы копируем каталог "rdir" на нашу локальную машину. В противном случае мы переносим файлы на удаленную машину. Когда имена каталогов опущены, программа производит манипуляции над текущими локальным и удаленным каталогами.

Для копирования файлов на сервер применяются команды "put" и "mput". Правила их использования очень похожи на те, что верны для "get" и "mget". Например,

# put [-o] filename
# mput [-d] files
-o - указание нового имени для закачиваемого файла
-d - создание каталогов с теми же именами, что и у закачиваемых файлов
# quote command
command - команда, передаваемая удаленной машине напрямую

С помощью "quote" можно отправлять команды, которые не будут преобразованы lftp и выполнены на стороне сервера. Согласно RFC 959 новый каталог можно создать, используя команду "MKD", попробуем это сделать.

# quote mkd 12345

После выполнения данной команды на сервере будет создан каталог "12345".

# help [cmd]

В качестве аргумента для "help" можно использовать имя любой из поддерживаемых lftp команд. К примеру,

# help help

Таким образом, можно получить описание того, как пользоваться "help".

Для разрыва соединения скажите "close".

# close

По умолчанию она разрывает соединение с активным сервером. Чтобы разорвать все соединения сразу (если вы подключены сразу к нескольким cерверам), можно использовать опцию "-a":

# close -a

Чтобы выйти из программы, достаточно сказать "exit".

# exit

Во время запуска lftp читает файл /etc/lftp.conf и извлекает оттуда параметры настройки, потом проверяются пользовательские файлы (~/.lftprc и ~/.lftp/rc). В том случае, если вы хотите как можно более полно представлять себе картину того, что происходит во время работы lftp, добавьте в файл конфигурации строку "debug" (рис. 4). Если же вам не нужна отладочная информация в полном объеме, используйте строку "debug 3". Также существует целый ряд переменных, регулируя значения которых, можно добиться более тонкой настройки lftp. К примеру, нам нужно, чтобы команда "ls" (просмотр содержимого каталога) автоматически брала опции "-al". Для достижения данной цели достаточно в /etc/lftp.conf указать желаемое значение для переменной "cmd:ls-default". Вот как это будет выглядеть:

set cmd:ls-default "-al"

Теперь при каждом запуске "ls", автоматически будут добавляться опции "-al".

set cmd:long-running 17

Если команду не удается выполнить, lftp ждет 30 секунд и повторяет запрос. В указанном выше примере значение времени ожидания изменено и равно 17 секундам.

set net:idle 50

Переменная "net:idle" позволяет установить (в секундах) время простоя соединения, после которого происходит отключение от удаленной машины.

set cmd:at-exit (string)

При желании можно автоматизировать некоторые операции, использовав переменную "cmd:at-exit". Ее значение может представлять собой список команд, которые нужно будет выполнить каждый раз перед тем, как процесс работы lftp будет завершен.

Для того чтобы посмотреть на значения переменных, устанавливаемые по умолчанию, скажите:

# set -d

Активные значения выводятся после выполнения команды
# set -a

Что ж, теперь вы не только знаете значительное количество команд, используемых при работе с lftp, но и имеете опыт правки /etc/lftp.conf (рис. 5). Надеюсь, что данная статья оказалась вам полезной.



статьи
статьи
 / 
новости
новости
 / 
контакты
контакты