Сделать бэкап сайта на стандартной CMS довольно просто. Сайт это всего лишь набор файлов и база данных, а значит все что нам нужно — собрать файлы и базу в одном месте и сделать архив. Пройдем по шагам весь процесс и сделаем бэкап сайта на примере WordPress.
На данном этапе у нас есть хост с установленным на нем вордпрессом. Файлы сайта лежат в директории /usr/share/nginx/waky.ru/ а база сайта waky_db.
Сделаем бэкап базы и разместим его в той же директории, что и файлы сайта. На хосте развернут LEMP стек, который использует в качестве базы данных MariaDB. Поэтому используем команду mariadb-dump:
[root@waky ~]# mariadb-dump --single-transaction waky_db > /usr/share/nginx/waky.ru/database_backup.sql
Данной командой мы делаем бэкап базы waky_db и записываем его в файл /usr/share/nginx/waky.ru/database_backup.sql
Теперь сделаем архив всей директории /usr/share/nginx/waky.ru/
[root@waky ~]# tar -czf /usr/share/nginx/backup.tar.gz /usr/share/nginx/waky.ru/
В результате у нас появился архив /usr/share/nginx/backup.tar.gz
Теперь удалим бэкап базы, так как держать бэкап базы данных в веб директории плохая идея. Она может оказаться в общем доступе если у вас не установлены ограничения в вашем веб сервере. Поэтому после того как мы сделали бэкап базы и добавили его в общий архив, сам бэкап базы нам больше не нужен и должен быть удален.
Мы разобрались как сделать бэкап сайта. Если вы делали бэкап не для ситуативного сохранения данных, как например при очередном апдейте сайта, а для продолжительного хранения, скачайте архив к себе на компьютер. Это можно сделать как через SSH так и через FTP клиент.
В качестве альтернативы, можно скачать архив с бэкапом через браузер. Если переместить backup.tar.gz внутрь директории /usr/share/nginx/waky.ru/ его можно скачать по ссылке https://waky.ru/backup.tar.gz Это тоже не очень правильный способ с точки зрения безопасности, но если вы только скачаете архив и сразу удалите его из веб директории это не станет проблемой.
Но давайте все же сделаем этот способ немного безопаснее. Используем Basic Auth, чтобы включить дополнительный уровень защиты. Создадим отдельную директорию для наших бэкапов:mkdir /usr/share/nginx/waky.ru/backup
Отредактируем файл конфигурации NGINX для нашего домена.vi /etc/nginx/conf.d/waky.ru.conf
Добавим следующие строки:location /backup {
auth_basic "Restricted area";
auth_basic_user_file /usr/share/nginx/.htpasswd;
}
Целиком конфигурация server отвечающего за https:
# Settings for a TLS enabled server.
#
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name waky.ru;
server_name www.waky.ru;
root /usr/share/nginx/waky.ru;
index index.php;
ssl_certificate "/etc/letsencrypt/live/waky.ru/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/waky.ru/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ /wp-login.php {
auth_basic "Restricted area";
auth_basic_user_file /usr/share/nginx/.htpasswd;
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /backup {
auth_basic "Restricted area";
auth_basic_user_file /usr/share/nginx/.htpasswd;
}
location / {
try_files $uri $uri/ /index.php?$args;
index index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Проверяем настройки и перезапускаем NGINX:nginx -t
nginx -s reload
Теперь для доступа по ссылке https://waky.ru/backup/ требуется ввести логин и пароль, который мы задали при первой настройке Basic Auth. Это позволит защитить файл бэкапа расположенный в данной директории от ботов, даже если вы забыли его своевременно удалить.
Переместим ранее созданный бекап в директорию /usr/share/nginx/waky.ru/backup
[root@waky ~]# mv /usr/share/nginx/backup.tar.gz /usr/share/nginx/waky.ru/backup
[root@waky ~]# ls /usr/share/nginx/waky.ru/backup
backup.tar.gz
Открываем в браузере https://waky.ru/backup/backup.tar.gz и скачиваем бэкап нашего сайта. Но даже с учетом дополнительной защиты, рекомендую удалить бэкап с хоста, это и место сэкономит и исключит утечку.