В этой статье приведён самописный bash-скрипт, с помощью которого вы сможете автоматизировать создание бэкапов сайтов на вашем VDS/VPS, если вы используете MySQL сервер версии выше версии 5.5 или же сервер MariaDB. Сам скрипт можно вызывать как кроном, так и напрямую. Скрипт написан с условиями, что в корне файловой системы имеется каталог /backup, а ваши сайты находятся в каталоге /var/www. Предупреждение: хотя скрипт полностью рабочий, он написан в ознакомительных целях и предназначен только для специалистов. Если вы испытываете затруднения с интерпретацией этих несложных команд, не пытайтесь вносить изменения на вашем сервере самостоятельно — лучше воспользуйтесь помощью профессионалов в области администрирования.

Начиная с версии 5.5, MySQL сервер поддерживает утилиту mysqldump, с помощью которой из консоли можно сделать дамп базы данных одной командой. Логика приведённого ниже баш-скрипта заключается в том, что сначала выполняется экспорт баз данных, а потом с помощью tar сжимаются файлы сайтов. В конце формируется архив tar.gzip, в который помещаются дампы БД и файлы сайтов по отдельности.

#!/bin/bash

# Переходим в предварительно созданный каталог для резервных копий
cd /backup

# Измените user на логин, password на пароль доступа к БД отдельных сайтов, 
# Измените site1 на имя БД, site1.sql на имя файла дампа SQL, который будет создан.
mysqldump -u user -p"password" -h localhost site1 > site1.sql
mysqldump -u user -p"password" -h localhost site2 > site2.sql
mysqldump -u user -p"password" -h localhost site3 > site3.sql
mysqldump -u user -p"password" -h localhost site4 > site4.sql
mysqldump -u user -p"password" -h localhost site5 > site5.sql

# Это переменная названия архива с префиксом даты и времени
TARNAME=webcopy.full__$(date +%d-%m-%y__%H-%M-%S).tar

# Создаём архив, упаковываем дамп первой БД
tar -cpf $TARNAME site1.sql

# Добавляем в существующий архив дампы остальных БД
tar -rpf $TARNAME site2.sql
tar -rpf $TARNAME site3.sql
tar -rpf $TARNAME site4.sql
tar -rpf $TARNAME site5.sql

# Удаляем дампы после их архивации
rm *.sql

# Переходим в директорию, где находятся ваши сайты
cd /var/www

# Добавляем в существующий архив каталоги сайтов по отдельности
tar -rpf /backup/$TARNAME site1
tar -rpf /backup/$TARNAME site2
tar -rpf /backup/$TARNAME site3
tar -rpf /backup/$TARNAME site4
tar -rpf /backup/$TARNAME site5

# Переходим обратно в каталог резервных копий
cd /backup

# Сжимаем tar архив с помощью gzip
gzip $TARNAME

После выполнения данного скрипта в каталог /backup запишется архив в формате tar.gz с префиксом даты, в котором будут содержаться файлы всех сайтов и дампы их баз данных по отдельности.