Синхронизация по FTP
Иногда возникает необходимость сделать копию удалённого ресурса через FTP. Для Linux имеется замечательный инструмент - lftp
. Пример скрипта:
#!/bin/bash
HOST='ftp-server.com'
USER='root'
PASS='Qwerty123'
TARGETFOLDER='/mnt/backup'
SOURCEFOLDER='/'
lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --use-cache --verbose $SOURCEFOLDER $TARGETFOLDER -e -x ^\..+/$ -x ^trash/
bye
"
В результате из корня серврера ftp-server.com
сливается всё, за исключением скрытых директорий (-x ^\..+/$
), а так же директории trash, лежащей в корне сервера (-x ^trash/
).
Ключи:
-e
- удалить из локальной директории всё то, чего нет на удалённом сервере;-x
- позволяет задать исключения из обработки, что позволяет не скачивать лишнего с сервера, а так же позволяет сохранить в локальной копии то, чего нет на удалённом сервере при использовании ключа-e
, воспринимает параметр как регулярное выражение (т.е.^trash/
исключит папку в корне сервера, аtrash
исключит всё, что содержит в пути данную комбинацию);-R
- этот ключ позволяет загружать данные из локальной директории на FTP-сервер.