Автоматизация резервного копирования сайта по расписанию. FTP

Некоторые провайдеры не дают доступ к размещенным сайтам по SFTP, поэтому всем удобный rsync работать не будет. Придется довольствоваться старым небезопасным ftp. Самый удобный инструмент – wget. Делаем примитивный однострочник:
$ wget --no-passive -r -l 0 -q 0 ftp://isp3.service.tld/web/ -P /tmp; zip -q -r /var/backup/sites/site1/backup_`date +\%Y\%m\%d\%H\%M\%S`.zip /tmp/isp3.service.tld; rm -fr /tmp/isp3.service.tld

Опция --no-passive включает активный режим. В пассивном режиме, который включается по умолчанию, траффик ftp может быть зарезан файерволом. Если все работает без этой опции, то в активном режиме режиме нет необходимости.
Комбинация опций -r -l 0 указывает рекурсивность и неограниченную глубину дерева каталогов.

Как видно, логин и пароль в командной строке отсутствуют. Их, конечно, можно указать как параметры wget, например --user="serviceftp" --password="$uperPa$$w0rd", но лучше так не делать.
Специально для хранения логинов и паролей ftp/http есть файл .netrc. И wget будет читать информацию из этого файла при получении запроса авторизации от сервера.

$ touch ~/.netrc
$ chmod 600 ~/.netrc
$ echo 'machine isp3.service.tld login serviceftp password $uperPa$$w0rd' >> ~/.netrc

Сайт в моем случае статичный и обновляется редко. Резервные копии нужны на случай, если пользователь сайт поломает, а у провайдера не будет рабочего бекапа. Бекап Шредингера, так сказать.

Добавим такую строчку в crontab (5:30 каждого первого числа):

30 5 1 * * /usr/bin/wget --no-passive -r -l 0 -q 0 ftp://isp3.service.tld/web/ -P /tmp; zip -q -r /var/backup/sites/site1/backup_`date +\%Y\%m\%d\%H\%M\%S`.zip /tmp/isp3.service.tld;rm -fr /tmp/isp3.service.tld > /dev/null

Leave a comment

Your comment