Этот документ был написан Matthew Borowski для Linux Documentation Project. Но он пока не закончен, т.к. еще не сделаны некоторые добавления. Вскоре должен появится раздел с информацией относительно работы сервера FTP.
Пожалуйста, свяжитесь со мной, если у вас есть добавления или изменения к этому документу. Пожалуйста, не просите у нас технической поддержки -- вы можете получить консультацию и поддержку по Unix через мою компанию, WorldServe, или просите помощи в группах новостей, таких как comp.os.linux.*. Имейте в виду, что я владею английским и фарси.
This document is Copyright 1999 by Matthew Borowski. You may freely distribute this document as long as the copyright notice remains unaltered. If you distribute this HOWTO as part of a commercial product, I would like to recieve a copy, but this is not required. If you wish to distribute a modified or translated version of this document, please contact me first for permission.
Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: <linux-howto@metalab.unc.edu>, или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу <linux-howto@asplinux.ru>
FTP (File Transfer Protocol - Протокол передачи файлов) - клиент-серверный протокол, протокол, который позволяет пользователю передавать и получать файлы с удаленного сайта. Он работает с TCP, и обычно используется в сети Internet, хотя может использоваться и в локальной сети.
FTP сайт - компьютер, на котором запущена программа FTP сервера (FTP демон или ftpd). Общедоступные FTP сайты обычно доступны любому, зашедшему под именем anonymous или ftp. Имеется много отличных FTP сайтов, на которых есть архивы свободно распространяемого программного обеспечения для Unix. Узнав, как использовать FTP, вы откроете себе доступ к огромным ресурсам.
Частные FTP сайты требуют имя пользователя и пароль. Если вы имеете учетную запись у вашего провайдера, вы можете обращаться к вашим файлам через FTP (свяжитесь с вашим системным администратором, чтобы проверить это).
FTP клиент - пользовательское приложение, которое обеспечивает доступ к FTP серверам. Существует множество FTP клиентов. Одни из них работают в графическом режиме, другие в текстовом.
FTP был впервые разработан в калифорнийском университете для включения в 4.2BSD (Berkeley Unix). RFC находится по адресу ftp://nic.merit.edu/documents/rfc/rfc0959.txt..
Быстрое руководство к использованию ftp.
Стандартная ftp программа - настоящий ftp клиент. Она входит в большинство дистрибутивов Linux. Сначало появилась в 4.2BSD.
Скажем, вы хотите соединится с FTP сайтом metalab.unc.edu, чтобы получить последние исходные тексты ядра Linux.
В командной строке введите:
$ ftp metalab.unc.edu |
FTP программа попытается соединится с metalab.unc.edu. Другой способ сделать это - запустить ftp из командной строки без параметров, и использовать команду open с именем сайта в качестве аргумента:
$ ftp ftp> open metalab.unc.edu |
Когда вы соединитесь с FTP сайтом, система спросит ваш логин (нажмите Enter, и вы войдете под локальным именем, в данном случае под именем foo). Мы войдем как anonymous или ftp, чтобы получить доступ к общедоступному архиву.
220 helios.oit.unc.edu FTP server (Version wu-2.6.0(2) Wed Nov 17 14:44:12 EST 1999) ready. Name (metalab.unc.edu:foo): |
Далее, мы введем наш адрес электронной почты в качестве пароля (этого требуют большинство FTP сайтов).
331 Guest login ok, send your complete e-mail address as password. Password: |
После успешного входа, вам выдается следующая информация:
Remote system type is UNIX. (Удаленная система - UNIX) Using binary mode to transfer files. (Используется двоичный режим для передачи файлов) ftp> |
После входа на FTP сайт, ftp выдаст тип передачи файлов. В данном случае - двоичный (бинарный) тип передачи. Двоичный режим передачи файлов - передача файлов в том виде, в котором они хранятся на FTP сервере. Режим Ascii (текстовый) используется для передачи только тектовых файлов. Вы можете вводить ascii или binary для переключения между режимами передачи.
Поскольку вы хотите получить исходные тексты ядра, оставьте двоичный режим передачи. Бинарный режим необходимо использовать для всех нетекстовых типов файлов - таких как графика, архивы, программы и т.п. Если сомневаетесь - используйте бинарный режим.
Введите команду ls, чтобы просмотреть список файлов. Команда ls выполняется на FTP сервере. Опции этой команды, которые вы можете использовать, отличаются на разных серверах. Большинство основных опций, в общем, везде доступны, смотрите страницы руководства (manpage) по ls для уточнения подробностей.
ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 33590 -r--r--r-- 1 root other 34348506 Dec 03 03:53 IAFA-LISTINGS lrwxrwxrwx 1 root other 7 Jul 15 1997 README -> WELCOME -rw-r--r-- 1 root other 890 Nov 15 13:11 WELCOME dr-xr-xr-x 2 root other 512 Jul 15 1997 bin dr-xr-xr-x 2 root other 512 Jul 15 1997 dev dr-xr-xr-x 2 root other 512 Jul 18 1997 etc drwxrwxrwx 11 ftp 20 4608 Nov 28 16:00 incoming lrwxrwxrwx 1 root other 13 Jun 04 1998 ls-lR -> IAFA-LISTINGS dr-xr-xr-x 17 root root 512 Jun 08 11:43 pub dr-xr-xr-x 3 root other 512 Jul 15 1997 unc dr-xr-xr-x 5 root other 512 Jul 15 1997 usr 226 Transfer complete. |
Если по команде ls выдается большой список файлов, вы можете использовать клавиши Shift-PageUp для прокрутки к началу списка. Это работает в консоли Linux, а также в xterm или rxvt.
На общедоступных FTP архивах, ресурсы обычно хранятся в каталоге /pub. На этом примере вы уже поняли, что исходники ядра находятся в каталоге /pub/Linux/kernel, так что введите следующее, чтобы войти в каталог:
ftp> cd pub/Linux/kernel 250-README for kernel 250- 250-What you'll find here: kernel sources and patches 250- 250- 250 CWD command successful. |
Вы видите сообщения, которые начинаются с "250", эти сообщения посылаются сервером. В данном случае, FTP сервер сконфигурирован, чтобы автоматически посылать вам файл README, когда вы входите в каталог.
Введите ls, и найдите файл, который хотите загрузить с FTP. Это linux-2.2.13.tar.gz. Введите следующую команду:
ftp> get linux-2.2.13.tar.gz local: linux-2.2.13.tar.gz remote: linux-2.2.13.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540 bytes). |
FTP программа начнет сохранять удаленный файл linux-2.2.13.tar.gz на локальный диск под именем linux-2.2.13.tar.gz
Если вы хотите сохранить файл под именем foo.tar.gz, вы должны ввести следующее:
ftp> get linux-2.2.13.tar.gz foo.tar.gz local: foo.tar.gz remote: linux-2.2.13.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540 bytes). |
Если вы хотите загрузить более одного файла за раз, используйте команду mget (multiple get). Вы можете использовать mget вместе со списком файлов, предназначенных для загрузки, разделенных запятыми, или использовать подстановочные знаки с командой mget. Например, команда:
ftp> mget linux* |
Получает все файлы, начинающиеся со строки "linux". Обычно, mget запрашивает вас относительно каждого файла перед тем, как загрузить его. Вы можете выключить это, используя команду prompt.
Допустим, вы написали программу и хотите закачать ее на сервер MetaLab. Сначала перейдите в каталог /incoming (большинство FTP серверов имеют этот каталог, обычно он называется incoming или uploads, туда можно поместить файлы), затем используйте команду put:
ftp> cd /incoming ftp> put foo.tar.gz local: foo.tar.gz remote: foo.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for foo.tar.gz. 226 Transfer complete. 10257 bytes sent in 0.00316 secs (3.2e+03 Kbytes/sec) |
Вы можете использовать put, чтобы поместить на сервер несколько файлов одновременно. Есть возможность размещать локальные файлы на сервер под другими именами.
Что если файл foo.tar.gz не в текущей локальной директории? Переключите локальную директорию, используя команду lcd (local change directory):
ftp> lcd /home/foo/ Local directory now /home/foo |
FTP клиент поддерживает использование знака (!), чтобы исполнять локальные команды. Например, вывести список файлов текущей локальной директории:
ftp> !ls |
Так вы можете запускать любые команды, работающие в вашей системе. Пожалуйста, помните, что !cd не работает, поэтому существует команда lcd.
Было бы неплохо наблюдать процесс загрузки файла с FTP. Вы можете использовать команду hash для вывода метки хеширования, пока загружается файл:
ftp> hash Hash mark printing on (1024 bytes/hash mark). |
Программа ftp будет печатать знак диеза для каждых полученных 1024 байт данных.
Имеется опция tick. (но не во всех ftp программах)
ftp> tick Tick counter printing on (10240 bytes/tick increment). This will print something to this effect as you download a file: Bytes transferred: 11680 |
Существуют и другие команды ftp. Если у вас есть права, вы можете создавать каталоги на удаленном сервере, используя команду mkdir. Вы можете удалять файлы на сервере, используя команду delete, или rmdir, для удаления каталогов. Также, вы можете изменять права доступа к файлам, используя команду chmod.
Для получения большего количества информации, смотрите помощь в ftp программе (введите help (без параметров) для вывода списка всех команд или help <имя_команды> для помощи по конкретной команде). Прочитайте страницы руководства (введите man ftp в командной строке).
Программа ftp доступна на большинстве систем (даже Win32 идет с ftp программой).
Существует большое количество других консольных ftp клиентов. Список, приведенный здесь, далеко не полный, но включает наиболее популярные из них. Ищите их на FreshMeat, чтобы найти больше.
NcFTP - общеизвестный ftp клиент для пользователей Unix. Он поставляется с большинством дистрибутивов Linux, и обладает расширенными функциями, такими, как автозавершение по tab и создание закладок. Версия 2 программы NcFTP имела проблемы при работе в полноэкранном режиме. Это исправлено в версии 3 (сейчас в бета).
Он не на все 100% совместим по стандартным ftp командам. Например, get и put в NcFTP подобны mget и mput в стандартном ftp. Так, если вы хотите сохранить удаленный файл под другим именем на локальном диске, вы должны ввести get -z remotename localname. NcFTP имеет отличную помощь, которая поможет изучить вам команды.
Последняя версия NcFTP доступна по адресу http://www.ncftp.com..
lukemftp имеет расширенные возможностеи, которые включают: редактирование командной строки, выбор в командной строке FTP и HTTP адреса, контекстно-зависимое завершение строки, линейку продвижения процесса, поддержка IPv6, изменение времени сохранения, страничный просмотр локальных и удаленных файлов, поддержка пассивного режима (с перходом в активный режим), поддержка SOCKS и регулировка скорости передачи.
lukemftp я рекомендую пользователям, не желающим использовать что-то отличное от стандартного ftp клиента, но при этом жаждущим получить широкие возможности.
Последняя версия lukemftp находится по адресу ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/.
lftp-клиент является расширенной командной строкой, основанной на FTP клиенте. Подобно bash, он имеет управление заданиями. Использует библиотеку readline GNU для ввода. Вы имеете возможность редактирования в командной строке и автозавершение ввода. lftp также имеет поддержку закладок, использование зеркал сайтов, и передачу нескольких файлов одновременно.
Вы можете получить последнюю версию lftp по адресу http://ftp.yars.free.net/projects/lftp/.
Debian пакет доступен здесь ftp://ftp.freshmeat.net/pub/debs/lftp/.
Удобный FTP клиент, работающий в полноэкранном режиме. Возможностей у него не очень много, но это восполняется легкостью в работе. Просмотр каталогов осуществляется при помощи клавиш управления курсором и Enter.
Вы можете получить последнюю версию cftp по адресу http://ftp.giga.or.at/pub/nih/cftp/.
Yafc очень приятный в использовании ftp клиент, с возможностями, включающими кеширование каталогов, автозавершение при вводе удаленного имени файла, элиасы (aliases), раскраску файлов, рекурсивное исполнение get/put/ls/rm, организацию очереди, множественные соединения, поддержку proxy и другие.
Последнюю версию yafc вы можете получить с http://www.stacken.kth.se/~mhe/yafc/.
Debian пакет доступен по адресу http://members.home.com/decklin/experimental/. http://members.home.com/decklin/experimental/.
Redhat пакет можно получить по адресу http://lz.freeservers.com/linux/yafc.html.
Имеется несколько графических FTP клиентов, разработанных для работы в X Window. Эти клиенты просты в работе для пользователей, использующих графическую среду, и предлагают некоторые возможности, которые было бы трудно использовать в тектовых ftp клиентах.
gFTP - FTP клиент для X Windows, написанный с использованием Gtk. Интерфейс, подобен популярному программному продукту WS_FTP.
gFTP показывает одновременные закачки, продолжает прерванные закачки, организует очередь, имеет возможность загружать полные каталоги, поддерживает proxy, имеет кеширование удаленных каталогов, пассивный и активный режим, поддержка drag-n-drop, диспетчер подключения и многое другое.
Если у вас установлен Red Hat Linux и графическая оболочка GNOME, тогда у вас, вероятно, уже есть gFTP. Если нет, вы можете найти gFTP на домашней страничкеhttp://gftp.seul.org/.
WXftp - FTP клиент, разработанный для X Windows, чтобы использоваться, главным образом, на рабочей станции Linux. Написан с использованием WXWindows toolkit и может быть откомпилирован с использованием Motif или GTK+.
WXftp включает интуитивно понятный пользовательский интерфейс (подобный WS_FTP), диспетчер сеансов, помощь, линейку процесса закачки, и многое другое.
WXftp можно найти на домашней страничке http://www.wxftp.seul.org.
LLNL XFTP был одним из первых графических FTP клиентов для Linux. Он поддерживает FXP (передачу файлов между двумя удаленными сайтами) и имеет Motif интерфейс.
Подробная информация доступна на http://www.llnl.gov/ia/xdir_xftp/.
Guiftp - простой ftp клиент, написаный с помощью GTK+. Используйте его, если у вас нет необходимости использовать особые возможности, и вы хотите получить простой клиент.
Домашняя страничка Guiftp http://www.altern.org/ldufresne/guiftp/.
Традиционный FTP сервер (ftpd) запускается через inetd (internet superserver daemon). Стандартный FTP порт - 21. Когда пользователь пытается войти, FTP сервер использует стандартный системный вызов для проверки имени и пароля пользователя, используя файл паролей или таблицу NIS, если вы ее используете. Если вход успешный, то пользователь получает доступ к системе.
Анонимный FTP работает по-другому. Пользователь входит под именем anonymous или the ftp (это может быть определено в файле конфигурации). Он получает доступ к публичным каталогам и не может получить доступ к каталогам, к которым ему запрещен доступ (напр. bin/, etc/, и lib/). Файлы для загрузки обычно содержатся в каталоге pub/.
FTP демон запускает внутренние команды для запроса ls. Вы можете помещать дополнительные программы в каталог bin, и пользователь сможет запускать их в своем ftp клиенте. Например, FTP из Red Hat включает команду RPM (пользователь сможет работать с пакетами RPM на сайте).
Некоторые серверы FTP работают по-другому. Например, позволяют установить учетные записи для пользователей, независимо от системного файла паролей (только учетные записи для FTP). Некоторые серверы (напр. ProFTPD и NcFTPd) имеют встроенную команду ls и не нуждаются в специальном дереве каталогов. Другие серверы ftp не следуют стандартным правилам ftp. FTP4ALL, например, не использует системный файл паролей. Использует свой файл пользователей и групп, и имеет особенности типа коэффицент закачка/загрузка и настраиваемые сообщения сервера.
WU-FTPD - ftp демон включен во многие дистрибутивы Linux, в том числе в Red Hat и Caldera. Вы можете больше узнать о WU-FTPD здесь http://www.wu-ftpd.org.
ProFTPD мощный FTP сервер с конфигурацией в стиле Apache, он поддерживает виртуальные хосты, и внутренний ls.
Полный справочник по командам и файлы дистрибутива можно найти по адресу A complete command reference and downloads can be found at http://www.proftpd.org