Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Хайретдинов_Лекции_СИТ-n.doc
Скачиваний:
2
Добавлен:
07.01.2020
Размер:
13.84 Mб
Скачать

Пересылка группы файлов

Команды get и put, рассмотренные нами ранее, могут пересылать файлы только по одному. Иногда возникает необходимость пересылки группы файлов. Для этого следует использовать команды mput и mget. Они имеют следующий синтаксис:

ftp> mput список_файлов

ftp> mget список_файлов

Команда mput находит указанные в списке файлы и копирует их в удаленную систему. Команда mget копирует файлы из удаленной системы в локальную. В обоих случаях имена файлов при перемещении из одной системы в другую сохраняются. Длина списка файлов не ограничена. В нем допускается использование универсальных символов подстановки.

Реальные правила раскрытия универсальных символов более сложны, чем изложено в документации программы ftp. Практически без проблем везде можно использовать звездочку (*) для обозначения любого количества символов (от нуля и более). В UNIX-системах можно применять вопросительный знак (?) для обозначения любого символа (но только одного). В других системах Вам придется немножко поэкспериментировать или довольно внимательно изучить документацию, чтобы узнать, что именно допускается.6 Ниже приведен типичный пример сеанса с использованием команд mput и mget:

ftp> cd work перейти в другой каталог на удаленном компьютере

250 CWD command successful.

ftp> ls b* посмотреть, какие там имеются файлы

200 PORT command successful.

150 ASCII data connection for /bin/ls (127.0.0.1,1129) (0 bytes).

b. tst

bash.help

bsdman. sh

226 ASCII Transfer complete.

remote: b*

29 bytes received in 0.03 second (0.94 Kbytes/s)

ftp> mget b* попробовать переслать файл

mget b.tst? yes первый файл: нужен?

200 PORT command successful.

150 ASCII data connection for b.tst (127.0.0.1,1133) (68112 bytes).

226 ASCII Transfer complete.

local: b.tst remote: b.tst

81927 bytes received in 0.41 seconds (2e+02 Kbytes/s)

mget bash.help? no второй файл: нужен?

mget bsdman.sh? no третий файл: нужен?

Теперь попробуем переслать на удаленный компьютер группу файлов командой mput. Зададим в командной строке два имени явно, чтобы показать, как это делается.

ftp> mput login tblsz.c попробуем передать несколько файлов

mput login? уеs первый файл: нужен?

200 PORT command successful.

150 ASCII data connection for login (127.0.0.1,1139).

226 Transfer complete.

local: login remote: login

2785 bytes sent in 0.03 seconds (91 Kbytes/s)

mput tblsz.c? у второй файл: нужен?

200 PORT command successful.

150 ASCII data connection for tblsz.c (127.0.0.1,1141).

226 Transfer complete.

local: tblsz.c remote: tblsz.c

975 bytes sent in 0.04 seconds (24 Kbytes/s)

ftp>

Отметим, что приведенная выше команда mput login tblsz.c не означает "передать файл login на удаленный компьютер под именем tblsz.c", как это было бы в простой команде put. Она означает "скопировать все файлы, указанные в командной строке, в удаленную систему, в текущий каталог без изменения имен".

Программа ftp обычно просит подтвердить Ваше намерение относительно пересылки каждого из указанных файлов. При положительном решении введите у (или yes, или нажмите клавишу [Enter]).

Ввод n (или nо)7 отменяет пересылку. Отвечать на запросы по каждому файлу надоедает (особенно если файлов очень много), но это поможет Вам избежать ошибок. Если этот процесс все-таки утомляет Вас или если пересылаемая группа файлов просто-таки огромна, задайте команду prompt, которая запретит выдачу запросов. В этом случае вся группа файлов будет передана без запросов на подтверждение. Повторный ввод команды prompt вновь включает режим запросов.

Необходимо обратить особое внимание на следующие моменты:

  • Помните, что имя выходного файла в командной строке не указывается. Все имена в командной строке интерпретируются как исходные файлы. Особенно велико искушение попробовать скопировать группу файлов в каталог; будьте осторожны! Ни в коем случае нельзя использовать, например, такую команду:

ftp> mput ch* . txt book

где book — имя каталога на удаленном компьютере. Правильный путь — сначала перейти с помощью команды cd в этот удаленный каталог.

ftp> cd book ftp> mput ch*.txt

To же самое относится и к команде mget.

  • Команды mput и mget (равно как и обычные команды put и get) нельзя использовать для копирования каталога. Их можно применять только для копирования групп файлов. Копирование каталога дает непредсказуемые результаты. Если Вам необходимо передать каталог, создайте архив и передайте этот архив. Как это делать, Вы узнаете ниже.

  • Вы можете обнаружить, что команда mget с универсальными символами подстановки не всегда работает хорошо. Это зависит от того, насколько правильно удаленный FTP-сервер выполнил команду ls.