Использование lftp для обмена файлами с ftp сервером в Linux


lftp - утилита командной строки, которая позволяет обмениваться данными с ftp и http серверами. lftp имеет функционал зеркалирования, который позволяет загружать или рекурсивно обновлять дерево каталогов. Она также имеет функционал обратного зеркалирования (mirror -R), который позволяет рекурсивно обновлять обновлять дерево каталогов на удаленном сервере. Зеркалирование также позволяет синхронизировать папки между двумя удаленными серверами.

Синтакс использования:

mirror
mirror options
mirror -c
mirror -R

На пример: Как загрузить все файлы с удаленного сервера?

Для начала устанавливаем соединение с сервером:

lftp ftp.server.com

Вводим имя пользователя и пароль:

lftp ftp.server.com:~> user username@ftp.server.com
Password:

В результате получаем:

lftp username@ftp.server.com:~>
Type ls command to see a list of files:

Вводим ls для просмотра содержимого каталога:

lftp ftp.server.com:~> ls

В результате получаем листинг каталога:

-rw-r--r-- 1 80 www 36809419 Jun 24 23:59 file1.ext
-rw-r--r-- 1 80 www 100912271 Jun 25 23:59 file2.ext
-rw-r--r-- 1 80 www 102926055 Jun 26 23:59 file3.ext

Для того что бы скопировать все файлы к себе в текущий каталог введите mirror:

lftp ftp.server.com:~> mirror

Вы можете указать исходный каталог и папку, в которой нужно разместить скачанные файлы (каталог назначения). Если каталог назначения заканчивается символом "/" (слэш), тогда к нему будет дописано имя исходного каталога.

lftp ftp.server.com:~> mirror source target

или

lftp ftp.server.com:~> mirror logs/ /data/wwwlogs

В этом случае все файлы из папки "logs" на исходном сервере будут скопированы в папку "/data/wwwlogs" на текущем.
При использовании следующего синтаксиса, все файлы из папки "logs" будут скопированы в папку "/data/wwwlogs/logs"

lftp ftp.server.com:~> mirror logs/ /data/wwwlogs/

Рекомендуется использовать mirror с включенной опцией продолжения загрузки, в этом случае не придется заново загружать все файлы в случае разрыва соединения или прерывания трансфера данных:

lftp ftp.server.com:~> mirror -c source target

или

lftp ftp.server.com:~> mirror --continue

Для того что бы скачать только новые/обновленные файлы используем ключ "only-newer":

lftp ftp.server.com:~> mirror --only-newer

или

lftp ftp.server.com:~> mirror -n

Можно ускорить операцию зеркалирования, включив параллельную загрузку или загрузку файлов в несколько потоков:

lftp ftp.server.com:~> mirror -P

Для того что бы загрузить параллельно 10 файлов можно воспользоваться следующей командой:

lftp ftp.server.com:~> mirror --parallel=10

Для того что бы загрузить только новые файлы с сервера в 10 потоков:

mirror --continue --only-newer --parallel=5 имя_папки имя_папки

Пример 2: Как загрузить локальные файлы на удаленный сервер?

Для заливки файлов на сервер нужно использовать ключ -R или --reverse

Для начала устанавливаем соединение с сервером:

lftp ftp.server.com

Вводим имя пользователя и пароль:

lftp ftp.server.com:~> user username@ftp.server.com
Password:

В результате получаем:

lftp username@ftp.server.com:~>
Type ls command to see a list of files:

Переходим в папку /home/project/website/version5/:

lftp ftp.server.com:~> lcd /home/project/website/version5/

Вывод:

lcd ok, local cwd=/home/project/website/version5

Для того, что бы загрузить файлы на сервер, используйте следующий синтаксис:

lftp ftp.server.com:~> mirror -R

Можно указать локальный и удаленный каталог:

lftp ftp.server.com~> mirror -R /home/user/projects/website /var/www/html

Одной командой:

lftp -e 'mirror --parallel=10 -R /home/user/projects/website /var/www/html' -u логин,пароль адрес_сервера

Если в ходе работы с удаленным сервером вы получили следующую ошибку:

521 Data connection cannot be opened with this PROT setting.

Тогда выполните следующие команды и повторите последнюю операцию:

set ftp:ssl-force true
set ftp:ssl-protect-data true

Share Button
(Visited 5 061 times, 9 visits today)

2 комментария на «“Использование lftp для обмена файлами с ftp сервером в Linux”»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *