Использование 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 [email protected]
Password:
В результате получаем:
lftp [email protected]:~>
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 [email protected]
Password:
В результате получаем:
lftp [email protected]:~>
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