
Мне интересно, можно ли с помощью утилиты командной строки FTP использовать get
команду FTP для получения файла с абсолютным путем, вместо того, чтобы заходить cd
в каждый последующий каталог, чтобы получить файл.
Когда я печатаю
ftp> get pub/sdc.tgz
Или даже это (с одним или двумя слешами перед pub)
ftp> get /pub/sdc.tgz
Мне сообщается, что файл не может быть найден:
local: /pub/sdc.tgz remote: /pub/sdc.tgz
ftp: local: /pub/sdc.tgz: No such file or directory
Однако, когда я вместо этого делаю
ftp> cd pub
ftp> get sdc.tgz
Работает абсолютно нормально.
Есть ли правильный синтаксис в командной строке ftp, чтобы получить файл с абсолютным путем, или мне нужно сначала cd
войти в систему pub
, чтобы сделать это?
(К вашему сведению: я пытаюсь использовать скрипт PERL, который запускается ежедневно и сохраняет файл на FTP-сервере, а затем более поздний скрипт, который 1. получает файл (что я не против сделать wget
) и 2. удаляет файл после того, как я его получу, что мне нужно сделать с помощью FTP. Я хочу, чтобы файл был удален вторым скриптом, чтобы в будущем, если у первого скрипта возникнут проблемы с сохранением файла на FTP-сервере, второй скрипт знал, что произошла ошибка, поскольку файла там нет. Я мог бы сохранять его и под разными именами, но я не хочу засорять FTP-сервер кучей файлов с разных дней.)
решение1
Это происходит потому, что когда вы используете FTP-функцию Get и не указываете локальный путь/имя файла, она пытается использовать тот же путь/имя, что и для удаленного файла.
Эта ошибка:
ftp: local: /pub/sdc.tgz: No such file or directory
Говорит вам, что не может найти файл на ЛОКАЛЬНОЙ машине. Поэтому я предполагаю, что у вас нет папки "pub" в корне вашего локального диска.
Синтаксис:получатьудаленный-файл [локальный-файл]
Параметры:
remote-file — указывает удаленный файл для копирования.
local-file — указывает имя для использования на локальном компьютере.Если не указано иное, файлу присваивается имя удаленного файла.
Поэтому попробуйте что-то вроде:
ftp> get pub/sdc.tgz c:\temp\sdc.tgz
или, возможно,
ftp> get pub/sdc.tgz .\sdc.tgz
Чтобы загрузить его в текущую папку.
Видетьздесьдля получения дополнительной информации оПолучатьПрименение.
Сопутствующий вопрос SU:Можно ли указать место назначения с помощью команды ftp get?
решение2
Вы можете использовать ncftpget
, который использует абсолютные пути, если вы можете установить его на своем клиентском компьютере.
Также, если вы используете Perl, то вы можете взглянуть наFTP-модуль.