Я пишу сценарий оболочки Linux для копирования локального каталога на удаленный сервер (удаления всех существующих файлов).
Локальный сервер: ftp
и lftp
доступны команды, нет ncftp
или любые графические инструменты.
Удаленный сервер: Доступно только через FTP. Ни rsync, ни SSH, ни FXP.
Я думаю о перечислении локальных и удаленных файлов для создания сценария lftp, а затем его запуска. Есть ли способ лучше?
Примечание. Загрузка только измененных файлов будет плюсом, но не обязательна.
lftp должен иметь возможность сделать это за один шаг, в частности, с lftp mirror
:
РЕДАКТИРОВАТЬ: синтаксис команды lftp сбивает с толку, исходный вызов, который я опубликовал, не работает. Попробуйте так:
lftp -e "зеркало -R {локальный каталог} {удаленный каталог}" -u {имя пользователя}, {пароль} {хост}
нота кавычки вокруг аргументов -e
переключатель.
cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*
У меня это сработало, многие другие попытки не увенчались успехом. В lftp дополнительная информация доступна через:
help mput
Эта команда, основанная на идее Фила об использовании режима зеркала lftp, делает свое дело:
lftp -c 'open -e "mirror /tmp/thedir ftp://nico:mypass@remotehost/~/destination/" ftp://nico:mypass@localhost'
Недостатком является то, что на локальном сервере должен быть запущен FTP-сервер.
Наконец-то получил ответ !!! Создать сценарий оболочки ftpmirror.sh
#!/bin/bash
path = /local-dir-path
lftp -e "mirror -R $path /$path" -u username,password ftp-server-ip
Если пакет lftp не установлен, установите его с помощью yum.