Назад | Перейти на главную страницу

Синтаксис пакетного файла для получения файлов с FTP-сервера

У меня проблемы с получением всех файлов с FTP-сервера. Обычно я получаю все файлы, используя командную строку / терминал со следующим синтаксисом: get a.txt (очень, очень много времени тратится на аутентификацию входа в систему)

Итак, я ожидаю, что я хочу получить все файлы с FTP-сервера с помощью сценария (пакета), поэтому я не трачу свое время на использование терминала / командной строки. Я просто хочу запустить сценарий. Конечно, в скрипт необходимо включить аутентификацию при входе. Как бы я это сделал?

Для такого рода вещей я использую wget:

wget -m ftp://user:password@ftp.example.com

Или команда lftp 'mirror':

lftp -c mirror ftp://user:password@ftp.example.com/

Избавьте себя от множества проблем, пытаясь написать это с помощью FTP-клиента. Скачать ncftp, и используйте это.

В принципе:

ncftpget -R ftp://user:password@host/path/to your files

-R означает, что он выполняет рекурсивную передачу

SCP

Во-первых, я бы порекомендовал вам использовать SCP через FTP. FTP небезопасен и передает учетные данные и файлы в открытом виде. SCP, по сути, sc переезжать ssh и довольно безопасен, особенно если вы используете пары ключей для аутентификации.

SFTP

Другой вариант - использовать SFTP. Несмотря на название, это не FTP через SSL или SSH-соединение. Это совершенно новый протокол. Однако, как и в случае с приведенной выше рекомендацией, это не точный ответ на ваш вопрос, а, скорее, небольшая мыльница по поводу небезопасности FTP.

FTP

Выберите свой ftp-клиент и изучите, как он обрабатывает сценарии. Вы не упомянули, какую ОС вы используете или какой клиент в своей ОС вы используете. Вам нужно будет предоставить эту информацию, прежде чем мы сможем принести вам больше пользы.

Какую ОС и FTP-клиент вы используете?

РЕДАКТИРОВАТЬ: Я установил, что «пакетный файл» соответствует среде Windows. В этом случае попробуйте следующее:

ftp.exe -s:filename

В -s передает команде ftp файл, содержащий команды FTP. В файле, который читает ftp.exe, создайте команды для входа в систему и получения файлов.

open ftp.server.name
user
[username]
[password]
get *.txt
quit

Дополнительные сведения о FTP и пакетных файлах см. На странице эта статья Microsoft KB.

Если вы используете Linux, у вас есть множество ftp-клиентов, доступных в выбранной вами оболочке. При подключении к FTP-серверу у вас будет возможность указать имя пользователя и пароль с помощью различных переключателей, которые назначает сам клиент. Стандартный синтаксис имени пользователя и пароля в URL-адресе FTP: ftp://user:password@host.tld/

Оттуда новая строка в вашем скрипте с использованием get Команда с подстановочными знаками загрузит все нужные вам файлы. Например get *.txt Однако имейте в виду, что точный синтаксис для getСоздание файлов и каталогов зеркалирования будет зависеть от вашего FTP-клиента. Я предпочитаю ncftp который имеет другие параметры зеркалирования, чем другие FTP-клиенты.

деготь

В качестве бонуса рекомендую первый сохранение файлов, которые вы хотите сократить, в размере передаваемых файлов, а также сохранение разрешений UNIX. FTP удаляет исходные разрешения из файлов, что может сильно раздражать при восстановлении веб-сайта или приложения.

Однако обычно это невозможно сделать с помощью FTP-клиента, если сам FTP-сервер не поддерживает расширенные команды. Например, FTP-сервер ncftpd предлагает некоторые расширенные команды, которых нет на других FTP-серверах. Итак, теперь я прошел полный круг, чтобы предложить вам настроить туннель SSH, чтобы вы могли сначала использовать tar для каталога. С установленным демоном SSH вы можете затем подключить SCP к серверу и получить файл TAR, а не использовать FTP.

Если вы должны сохранить FTP в уравнении, вы можете создать задание cron на сервере, которое обрабатывает нужные файлы, помещает их в каталог FTP, а затем создает сценарий FTP, который подключается к серверу и извлекает файл tar.

Плавник

Автоматизация - ваш друг. Вы на правильном пути, просто начните больше думать о безопасности и оптимизации.