Простенький бэкап wordpress

0
(0)

Хотим иметь бэкап nginx конфигов, всей диры с wordpress а также базу данных wordpress.

Пишем скрипт на bash который назовем например backup.sh

Bash
#!/bin/bash
date=$(date +%d-%m-%Y.%H.%M.%S)
backup_folder="/srv/backup"
dump_extra_files="/etc/my.cnf.d/.dump"
database_name="wordpress"
wordpress_root_dir="/usr/share/nginx/html"
nginx_root_dir="/etc/nginx"

function mysql_backup() {
    mysqldump --defaults-extra-file=$dump_extra_files $database_name > $backup_folder/${date}_wordpress.sql
}

function backup_files() {
    tar -czvf ${backup_folder}/${date}_${1}.tar.gz -C $2 .
}

function rotate_backup() {
    find $backup_folder -type f -mtime +3 -exec rm -f {} \;
}

function create_dir() {
    if [[ ! -d $backup_folder ]];then
        mkdir -p $backup_folder
    fi;
}

create_dir
mysql_backup
backup_files "wordpress_files" "${wordpress_root_dir}"
backup_files "nginx_files" "${nginx_root_dir}"
rotate_backup

Используемые переменные:

date — тут получаем текущую даты в определенном формате.

backup_folder — в этой директории будут лежать все файлы бэкапа.

dump_extra_files — даже с localhost у нас инстанс mysql запоролен. Чтобы скрипт не ломался на предлоге ввода пароля, создадим отдельный файл в /etc/my.cnf.d/.dump следующего вида

Plaintext
[mysqldump]
user=<user>
password=<password>

Его то и будет использовать скрипт для коннекта к БД.

database_name — имя базы данных.

wordpress_root_dir — директория со всеми файлами wordpress.

nginx_root_dir — директория с файлами nginx.

Функции:

create_dir — проверяет наличие директории для бэкапов и создает ее, если такая директория отсутствует.

mysql_backup — делает бэкап базы в sql файл.

backup_files — переиспользуемая функция, в зависимости от переданных аргументов во время вызова делается бэкап wordpress файлов или nginx.

rotate_backup — удаляем из директории бэкапа все файлы старше 3 дней.

Добавляем в планировщик cron строку

Bash
@daily /path/to/backup.sh

Теперь скрипт запускается каждый день автоматически.

Забрать бэкап можно командой, которую также можно добавить в cron.

Bash
rsync -acvP -e 'ssh -o StrictHostKeyChecking=no' vds-site:/srv/backup/ /srv/backup_wp

vds-site — это alias в ssh конфиге, который можно настроить по этой статье.

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий