7

Например, у меня есть резервные копии базы данных на моем сервере Linux, и я хотел бы написать скрипт для загрузки его на удаленный FTP. Я попробовал команду put , но она может передавать только один файл за раз. Затем я попробовал команду mput, но она показывает только вопросительные знаки для файлов, которые я хочу передать (возможно, я использую ее неправильно?..)

Я попробовал это:

#!/bin/bash
ftp -n <<EOF
open ftp.server.com
user name password
cd backup
mput /backup/*
EOF

Но это не сработает. Он выводит имена файлов, которые я хочу передать с вопросительными знаками в конце имен. Я что-то упустил или, может быть, есть более простой способ?

3 ответа3

8

Взгляните на ncftp , он поставляется с утилитой (ncftpput), которую можно написать для этой цели:

$ ncftpput -R ftp.server.com /remote/path /backup

Флаг -R означает рекурсивный режим. Вы можете иметь свои данные аутентификации в отдельном файле. Смотрите man- страницу (ncftpput(1)) для подробностей.

3

Другой альтернативой может быть использование CurlFtpFS, драйвера файловой системы FUSE, который предоставляет FTP-хост в качестве смонтированного каталога (позволяя вам получать доступ к этим файлам с помощью любых обычных инструментов, включая cp). Я не знаю, насколько хорошо это работает, но после быстрого поиска в Google это выглядит очень многообещающе. CurlFtpFS идет дальше, чем FUSE, поэтому должен быть стабильным.

Чтобы использовать его, установите соответствующий пакет для вашего дистрибутива (например, Arch и Debian используют имя пакета curlftpfs), загрузите модуль fuse и sudo curlftpfs ftp.example.com /mnt/ftp/ -o user=username:password,allow_other, подставляя соответствующие значения для имени сервера, точки монтирования, имени пользователя и пароля.

На связанной странице есть дополнительная информация, но с этого следует начать.

2

Вы могли бы использовать LFTP

lftp ftp://user:password@domain.ltd -e "mirror -e -R /local/folder /remote/folder ; quit"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .