В Linux для синхронизации между серверами, помимо использования rsync, мы также можем использовать lftp.
Lftp — это ftp-клиент, который может рекурсивно перемещаться в подпапки для упрощения синхронизации файлов. Как и rsync, только lftp не имеет функции дельта-сжатия и не работает на основе изменений блока (он проверяет временную метку). Как пользоваться?
Сначала установите lftp на свой Linux. Для CentOS используйте команду
1 |
yum install lftp |
или если вы вошли в систему как не root, начните с sudo
1 |
sudo yum install lftp |
Во-вторых, подключите lftp к удаленному ftp-серверу
1 |
# lftp -u username,password myftp.servername |
Если ваш удаленный сервер не поддерживает SSL, отключите поддержку SSL в lftp (принудительно используйте порт 21), чтобы он не зависал при SSL-соединении / рукопожатии.
1 |
# lftp -e "set ftp:ssl-allow off;" -u username,password myftp.servername |
Вы также можете сначала войти в систему, а затем отключить ssl с помощью команды:
1 |
# set ssl:verify-certificate false |
В-третьих, сделать зеркала
Если вы хотите выполнить зеркальное отображение из УДАЛЁННОГО в ЛОКАЛЬНОЕ, используйте команду
1 |
# mirror --continue --delete --verbose $REMOTE_FOLDER $LOCAL_FOLDER |
Если вы хотите зеркало из ЛОКАЛЬНОГО в УДАЛЁННОЕ, используйте команду
1 |
# mirror --continue --delete --verbose --reverse $LOCAL_FOLDER $REMOTE_FOLDER |
Преодоление медленной синхронизации данных в LFTP
Если будет синхронизироваться много данных — происходить это будет медленно, потому как вам придется синхронизировать тысячи файлов. Решение состоит в том, чтобы активировать проверку на основе времени листинга файла.
Используйте set ftp:use-mdtm off
и mirror --ignore-time
для первого вызова, чтобы избежать повторной загрузки всех файлов.
Вы также можете попробовать обновить lftp и / или использовать set ftp:use-mlsd on
, в этом случае lftp получит точное время модификации файла из выходных данных команды MLSD (при условии, что сервер поддерживает команду).
Создание сценария автоматической синхронизации загрузки LFTP
Если вы хотите, чтобы это было просто и можно было сделать автоматический cron, создайте файл .txt следующим образом:
1 2 3 4 5 6 7 8 |
set ftp:ssl-allow on set ftp:ssl-force true set ftp:ssl-protect-data true set ssl:verify-certificate false open ftp://my.ftpserver.com -p 21 user username pass mirror --continue --delete --verbose --reverse /path/to/local_folder/ /path/to/remote_folder/ bye |
Затем сохраните указанный выше файл как «lftp_upload.txt», затем запустите его с помощью команды
1 |
lftp -f lftp_upload.txt |
Создание сценария автоматической синхронизации загрузки LFTP
В отличие от сценария загрузки, следующий сценарий загружает файлы с удаленного сервера, чтобы синхронизировать их с локальной папкой.
1 2 3 4 5 6 7 8 |
set ftp:ssl-allow on set ftp:ssl-force true set ftp:ssl-protect-data true set ssl:verify-certificate false open ftp://my.ftpserver.com -p 21 user username pass mirror --continue --delete --verbose /path/to/remote_folder/ /path/to/local_folder/ bye |
Затем сохраните указанный выше файл как «lftp_download.txt», затем запустите его с помощью команды
1 |
lftp -f lftp_download.txt |