Образовательная программа компании Global Inform. Украина, Харьков
Работа с ftp
После того как вы установите связь с помощью ftp и найдете
путь в нужный каталог на удаленной системе, вам понадобится неко-
торые команды для перемещения файлов из Internet в ваш локальный
компьютер. С помощью всего лишь 5 команд (ascii, binary, get, put
и quit) вы можете стать экспертом в ftp.
В Internet приняты некоторые общие обозначения файлов:
имя_файла.tar означает архив, созданный с помощью tar; имя_фай-
ла.Z означает файл, созданный программой упаковки Unix (перед его
использованием нужно распаковать этот файл с помощью программы
распаковки Unix); имя_файла.tar.Z означает упакованный архив;
имя_файла.zip - уплотненный файл, созданный программой упаковки
PKZIP; имя_файла.tar.gz представляет собой уплотненный файл, соз-
данный программами упаковки GNU gunzip и gzip; имя_файла.txt -
текстовый файл; имя_файла.1 - это исходный файл nroff; а имя_фай-
ла.ps - это файл PostScript, готовый для печати на принтере Post-
Script.
По умолчанию при передаче файлов используется режим ascii,
однако перед передачей полезно явно устанавливать режим. Команда
ascii применяется перед передачей чисто текстового файла, команда
binary служит для создания точной побайтовой копии файла.
Команда get загружает файл с удаленного компьютера в ваш ло-
кальный компьютер, а put передает файл из локального компьютера
на удаленный (вместо get и put эти команды иногда называются recv
и send). Команда get всегда должна содержать имя загружаемого
файла и может также включать имя, под которым он будет использо-
ваться в вашей системе (первоначальное имя использовать не обяза-
тельно).
Например, чтобы загрузить текстовый файл с именем faq (этот
файл Internet содержит ответы на часто типовые вопросы), располо-
женный в каталоге /pub на удаленном компьютере, и записать его в
вашу локальную систему под именем faq.txt, вы можете использовать
следующую последовательность:
ftp> cd pub
250 CWD command successful.
ftp> ascii
ftp> get faq faq.txt
200 PORT command successful.
150 Opening ASCII mode data connection for faq (50007 bytes).
226 Transfer complete.
После команды get ftp сообщает число переданных байт и вре-
мя, прошедшее с момента начала передачи. Если больше файлов пере-
давать не требуется, то остается только с помощью команды quit
закрыть связь с удаленным компьютером и завершить ftp.
Вы можете получить исчерпывающий список сотен ftp-узлов,
послав запрос по адресу:
mail-server@rtfm.mit.edu
без заголовка, указав в тексте сообщения:
send usenet/news.answers/ftp-list/sitelist/part1
send usenet/news.answers/ftp-list/sitelist/part2
...
send usenet/news.answers/ftp-list/sitelist/part17
send usenet/news.answers/ftp-list/sitelist/part18
Вы получите (по электронной почте) 18 файлов, которые содер-
жат "список ftp-узлов". Учтите, что каждый из этих файлов занима-
ет около 60 Кбайт, так что полный список будет около 1 Мбайта.
Это может вызвать "затор" в вашей системе, поэтому осмотритесь
сначала, возможно такой список можно найти где-то поближе, или
попробуйте запросить сначала первые несколько файлов для примера,
перед тем как запрашивать оставшиеся.
Другой файл, который вы могли бы хотеть иметь, называется
"Часто задаваемые вопросы и ответы по ftp", который содержит го-
раздо больше информации по использованию ftp, так что добавьте
следующую строку к вашему запросу:
send usenet/news.answers/ftp-list/faq
После того как вы получите список, вы увидите десятки запи-
сей, подобных нижеследующей, которые указывают название ftp-уз-
ла, его местонахождение, разновидность файлов, которые можно там
найти.
Site : oak.oakland.edu
Country: USA
Organ : Oakland University, Rochester, Michigan
System : Unix
Comment: Primary Simtel Software Repository mirror
Files : BBS lists; ham radio; TCP/IP; Mac; modem protocol info;
MS-DOS; MS-Windows; PC Blue; PostScript; Simtel-20; Unix
Если вы находите интересующий вас ftp-узел в списке, пошлите
запрос на один из следующих ftpmail-серверов:
ftpmail@census.gov (США)
ftpmail@sunsite.unc.edu (США)
bitftp@pucc.princeton.edu (США)
bitftp@vm.gmd.de (Германия)
ftpmail@ftp.uni-stuttgart.de (Германия)
ftpmail@ftp.luth.se (Швеция)
ftpmail@doc.ic.ac.uk (Великобритания)
ftpmail@cs.uow.edu.au (Австралия)
Не имеет значения какой именно сервер вы выберите, но бли-
жайший просто может ответить быстрее. В тексте письма укажите:
open <site>
dir
quit
К вам вернется список файлов и каталогов, находящихся в кор-
невом каталоге данного ftp-узла. Ниже вы видите пример выполнения
приведенных команд, когда вместо <site> было подставлено имя
ftp-сервера "oak.oakland.edu".
-r--r--r-- 1 w8sdz OAK 1255 Nov 9 16:32 README
drwxr-xr-x 3 w8sdz OAK 8192 Feb 25 05:17 SimTel
d--x--x--x 3 root system 8192 Jan 19 20:26 bin
d--x--x--x 5 root system 8192 Dec 30 05:15 etc
drwxrwx--- 2 incoming OAK 8192 Feb 25 11:05 incoming
drwxr-xr-x 3 w8sdz OAK 8192 Jan 30 17:37 pub
drwxr-xr-x 2 jeff OAK 8192 Apr 17 1994 siteinfo
В следующем запросе вы можете "открыть" другую интересующий
вас каталог, указав (например):
chdir pub
перед командой "dir". ("chdir" значит "change directory", т.е.
"сменить каталог, а "pub" - это общепринятое имя одного из ката-
логов на ftp-серверах, где обычно самое интересное и находится).
Определив имя файла, который вы хотели бы передать на свою систе-
му, укажите:
get <имя_файла>
в вашем следующем послании серверу вместо команды "dir". Если же-
лаемый файл текстовый, то этого будет достаточно. Если же это
двоичный файл (исполняемый модуль, архивированный файл и т.д.) то
перед командой "get" вам нужно указать команду:
binary
Многие каталоги на ftp-узлах включают в себя файл с именем
00-index.txt, README или что-нибудь в этом роде, который содержит
краткое описание файлов, содержащихся в каталоге. Если в резуль-
тате выполнения команды "dir" вы обнаруживаете, что такой файл
существует, то просто даете команду "get" для этого файла и, та-
ким образом, экономите свое время.
Давайте получим текст Magna Carta. Вот текст запроса, кото-
рый мы посылаем на ftpmail@census.gov (или другой ftpmail сер-
вер):
open ftp.spies.com (Адрес ftp-узла)
chdir Gov/World (каталог, в котором находится файл)
get magna.txt
quit
Вот команды, которые надо указать, чтобы получить файл из
файлового архива Simtel, упоминавшегося ранее.
open oak.oakland.edu (Адрес ftp-узла)
chdir SimTel/msdos/disasm (каталог, в котором находится
файл)
binary (файл архивированный)
get bubble.zip
quit
Некоторые другие интересные ftp-узлы, которые вы можете за-
хотеть "посетить", приведены ниже. (Используйте имена серверов в
команде "open", а имена каталогов в команде "chdir", как в вышеп-
риведенных примерах).
ocf.berkeley.edu
Попробуйте: pub/Library (документы, Библия, тексты песен)
rtfm.mit.edu
Попробуйте: pub/usenet/news.answers (инфо по USENET)
oak.oakland.edu
Попробуйте: SimTel/msdos (гигантский файловый архив)
ftp.sura.net
Попробуйте: pub/nic (файлы помощи)
quartz.rutgers.edu
Попробуйте: pub/humor (шутки, юмор и т.д.)
gatekeeper.dec.com
Попробуйте: pub/recipes (рецепты и т.д.)
Помните, что вы не можете просто послать сообщение с коман-
дами на ftpmail@..., не предварив его командой "open <site>", где
"site" - это известный вам ftp-узел.
Имейте в виду, что ftp-серверы обычно серьезно загружены,
поэтому ваш запрос может оставаться без ответа в течение несколь-
ких минут, часов, а то и дней, в зависимости от того, куда вы
направили свой запрос. Некоторые большие файлы могут быть "разре-
заны" на несколько частей и высланы вам по отдельности.
Если запрошенный файл вернулся к вам в виде чего-то похожего
на то, что вы видите ниже (слово "begin" c числом и имя файла в
одной строке, а затем строки длиной 61 символ, начинающиеся с
"M"), то это вероятно кодированный отправителем (uuencode) двоич-
ный файл (так делается для надежной передачи подобных файлов).
begin 666 answer2.zip
M4$L#!`H`!@`.`/6H?18.$-Z$F@P```@?```,````5$5,25@S,34N5%A480I[
M!P8;!KL,2P,)!PL).PD'%@.(!@4.!P8%-@.6%PL*!@@*.P4.%00.%P4*.`4.
Нужно будет раздобыть программу-раскодировщик "uudecode" для
той операционной системы, которую вы используете (DOS, OS/2,
Unix, Mac, и т.д.) и раскодировать полученный файл. Наиболее ве-
роятно, что вы найдете такую программу на вашей собственной сис-
теме. Если же нет, то в следующем разделе вы увидите как находить
нужные ftp-узлы для получения необходимой копии программы.
Если вы несете расходы за хранение информации в вашей систе-
ме и вы собираетесь получить что-то крупное через ftp, то будет
разумнее сделать это частями, чтобы обойти расходы за хранение.
По умолчанию ftp предполагает, что загружаемые файлы имеют
формат ASCII. Если вы загружаете двоичные файлы, то необходимо
предварительно дать команду binary, в противном случае эти файлы
во время передачи будут запорчены. Чтобы переключиться обратно в
режим ASCII, вы можете воспользоваться командой ascii.
Иногда файлы передаются по Internet в формате tar. Программа
tar - это утилита Unix, которая применялась сначала для копирова-
ния на магнитную ленту сразу группы файлов. Она до сих пор ис-
пользуется для пакетной обработки сразу группы файлов. Чтобы вы-
делить сгруппированные tar файлы, используйте команду tar с аргу-
ментом xvf и именем файла. Например, чтобы выделить файл с именем
design.tar, вы можете использовать команду:
% tar xvf design.tar
Обычно ftp помещает файлы в текущий каталог на локальном
хост-компьютере. Переопределить это можно двумя способами. Прос-
тейший метод - это смена текущего каталога на локальном компьюте-
ре с помощью команды lcd:
ftp> lcd internet-files
Local directory now /u3/chrisr/internet-files
ftp>
Если вы передаете несколько файлов и хотите слышать сигнал
при завершении передачи каждого из них, используйте команду bell.
Команда hash приводит к тому, что ftp в процессе передачи файла
выводит на экран символы #. Это позволяет наблюдать за ходом пе-
редачи. Если вы не уверены точно в том, что в каталоге локального
хост-компьютера уже не присутствуют файлы с теми же именами, что
и имена принимаемых файлов, то полезной будет команда runique.
Чтобы проверить, как установлены параметры ftp, используйте ко-
манду status:
ftp> status
Connected to netcom.com.
No proxy connection.
Mode: stream; Type: ascii; Form: non-print;
Structure: file Verbose: on; Bell: off;
Prompting: on; Globbing: on
Store nique: off; Receive unique: off
Case: off; CR stripping: on
Ntrans: off
Nmaps: off
Hash mark printing: on; Use of PORT cmds: on
ftp>