Бэкап сайта с VPS на удаленный FTP сервер

Люба х...ня

Эта статья пригодится владельцам сайтов на облачных хостингах типа digitalocean или тем, кто конфигурирует сервера под свои нужды без использования панелей ispmanager, cpanel, vesta и тп.
Давно хотел написать этот скрипт, но все никак руки не доходили.

Однако количество сайтов на собственных VPS растет, и вручную заходить и делать бэкапы начало надоедать (бэкап базы осуществляется автоматически каждый день скриптом automysqlbackup, а файлы архивировал и перемещал вручную).

Не имеет смысла держать бэкапы на том же сервере, что и сайт. Лучше спится, когда актуальная версия сайта в вас на харде или другом сервере.

Итак, приступим.

Просто создайте папку для бэкапов (в моем случае это / var / www / backup), настройте конфиги: путь к директории, доступ базы и фтп.

Сам скрипт:


#!/bin/sh
# Company Otakoyi.com
# Author wmgodyak mailto:wmgodyak@gmail.com

# Config
BACKUP=/var/www/backup
BACKUP_DIR=/var/www/example.com

#MySQL
MUSER="root"
MPASS=""
MDB=""

# FTP
FTPD="/"
FTPU=""
FTPP=""
FTPS=""

# end config

# Binaries
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"

# archive prefix
NOW=$(date +%Y%m%d)
DUMPFILE=full-$NOW.tar.gz

# tmp dir

mkdir $BACKUP/$NOW

# backup site and db to tmp dir

$TAR -czf $BACKUP/$NOW/site.tar.gz $BACKUP_DIR
mysqldump -u$MUSER -p$MPASS $MDB > $BACKUP/$NOW/db.sql

ARCHIVE=$BACKUP/$DUMPFILE
ARCHIVED=$BACKUP/$NOW

# backup all to one archive
$TAR -zcvf $ARCHIVE $ARCHIVED

# ftp
cd $BACKUP
$FTP -np $FTPS <

Этот простой скрипт умеет сделать дамп базы и директории с сайтом, объединяет их в один архив и посылает на удаленный фтп сервер.
После завершения операций он удаляет архив с текущего сервера.
Для автоматизации работы разместите скрипт в /etc/cron.daily/ftpbackup.sh и будет вам счастье.

Скачать его вы можете здесь

Расскажите нам о своем проекте!