Перейти к содержимому

Резервирование и восстановление информации

Процесс создания резервной копии данных буду называть архивированием А сам файл с данными для восстановления далее буду называть архив.

В корне инсталляции есть скрипт backup.sh. Он подготовит архив. Получившийся файл нужно копировать в надёжное хранилище без доступа третьих лиц. В случае переезда на другой сервер или внештатной ситуации можно восстановиться с него этим же скриптом.

Его содержимое примерно такое:

#!/bin/bash
set -ex
backup_dir='./backups'
curtime=$(date '+%Y_%m_%d_%H:%M:%S')
which docker > /dev/null
if [ $? -eq 1 ]; then
echo "docker not found. Check if it is installed."
exit 1
fi
mkdir -p "$backup_dir"
docker compose exec djing2db pg_dump -U djing2_usr djing2 > "${backup_dir}/dump_${curtime}.sql"
docker compose cp yvix-front:/var/www/media "${backup_dir}/media"
fname="backup_${curtime}.tar.gz"
tar -cvzf "./${fname}" "$backup_dir"
mv -v "./${fname}" "$backup_dir/"

Пример создания архива

Окно терминала
$ ./backup.sh dump /mnt/storage/backups

Это создаст архив в директории /mnt/storage/backups. Имя файла имеет формат backup_%Y_%m_%d_%H%M%S.tar.gz (в формате комманды date из linux). Потому имя будет, например: backup_2025_05_29_165025.tar.gz

Окно терминала
$ ./backup.sh restore ./mnt/storage/backup_2025_05_29_165025.tar.gz

Рекомендация по хранению резервных копий

Заголовок раздела «Рекомендация по хранению резервных копий»

Лучше всего настроить сторонний сервер, который будет в активном режиме заходить на этот сервер и забирать файлы архивов(резервных копий). Так, если случится, что кто-то завладеет сервером, то не получит доступа к резервным копиям, так как с этого сервера просто нет доступа к серверу резервных копий. Соответственно, чем бо́льшая история хранится в резервных копиях, тем меньше шанс того что старые копии сотрутся, а новые будут испорчены.