Резервное копирование и восстановление в Linux

Данная инструкция является кросс дистрибутивной, поэтому будет справедлива и для других сборок Unix. Предполагается, что все команды выполняются от root. Создаём каталог в файловой системе, куда потом будут помещаться архивы с резервными копиями

mkdir -p /var/backup

Создаём командный сценарий /var/scripts/backup_db.sh

#!/bin/sh

export VERSION=0_7_6 # версия программы Severcart
export BPPATH=/var/backup
export DB=severcart
export PGHOST=127.0.0.1
export PGUSER=scuser
export PGPASSWORD=123456

pg_dump -d $DB | gzip > $BPPATH/$VERSION_$(date +%d-%m-%Y).sql.gz

Устанавливаем бит исполнения

chmod +x /var/scripts/backup_db.sh

Исходя из листинга видно, что работа скрипта регулируется переменными окружения. Далее создадим задание в cron для периодического выполнения.

crontab -e

Добавляем в конец файла строку и сохраняем.

0 3 * * * /var/scripts/backup_db.sh
Т.о. скрипт резервного копирования будет запускаться каждый день в 3:00 ночи.

Восстанавливаем базу

Важно! Восстанавливаемая и установленная версии программы должны совпадать, иначе процесс восстановления завершится с ошибкой. Например, если был сделан бэкап Severcart 1.1.0, то и восстанавливаемая версия должна быть 1.1.0.

Исходники файлов можно скачать с сайта https://www.severcart.ru/downloads/. Инструкция по инициализации виртуального окружения с необходимыми зависимостями находится здесь. Выполняется последовательно, за исключением запуска скрипта

python3 /var/venv/severcart/tkinstaller/install.py
т.к. восстановление структур и их данных будет производиться из резервной копии.

Восстанавливаем структуру базы данных и их содержимое:

zcat /var/backup/0_7_6_28-12-2016.sql.gz > file.sql

psql -h 127.0.0.1 -d severcart -U scuser -f file.sql

На этом восстановление программы завершён.