|
|
Модуль поиска не установлен. |
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). Надеюсь, что данная статья оказалась вам полезной.
|