Бекап сайту з 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 і буде вам щастя.

Завантажити його ви можете тут

Розкажіть нам про свій проект!