Содержание
Резервное копирование почтового сервера на базе данных PostgreSQL
1. Создаем директорию для резервной копии
Директория может быть любой. Путь /mnt/backup-mail
будет рассмотрен далее при инсталляции.
mkdir /mnt/backup
2. Создание бэкапа БД
Создадим файл backup_file.sql
(дамп базы данных):
cd /mnt sudo -u postgres pg_dump -U postgres -d postfix -F c -c -f /var/lib/postgresql/backup.sql mv /var/lib/postgresql/backup.sql /mnt/backup/backup.sql
3. Архивируем конфигурационные файлы и БД
В зависимости от типа ОС, будет сохранен только один конфигурационный файл SpamAssassin:
/etc/spamassassin/local.cf
— для deb дистрибутивов;/etc/mail/spamassassin/local.cf
— для rpm дистрибутивов.
tar czvf /mnt/backup/backup-mail.tar.gz --selinux /etc/postfix/main.cf /etc/postfix/master.cf /etc/postfix/tls_policy_maps /etc/postfix/mysql/ /etc/dovecot/ /etc/ssl/mail_cert.pem /etc/ssl/mail_key.pem /etc/spamassassin/local.cf /etc/mail/spamassassin/local.cf /etc/opendkim /mail/ /mnt/backup/backup.sql
4. Переносим архив на бэкапный или новый сервер почты
Для переноса архива backup-mail.tar.gz
на новый сервер c использованием SSH, вы можете к примеру воспользоваться командой scp
(Secure Copy):
scp backup-mail.tar.gz user@ip_new_server:/path/to/destination/
Где:
backup-mail.tar.gz
— имя архива;user
— имя пользователя на сервереip_new_server
;/path/to/destination/
— путь к целевой директории на сервере, куда вы хотите скопировать архив.
Вам будет предложено ввести пароль пользователя на сервере ip_new_server
для завершения операции копирования. Убедитесь, что у вас есть права доступа и правильные учетные данные пользователя для выполнения команды scp
.
Также для ежедневного резервного копирования БД можно использовать следующий подход
Создайте скрипт для выполнения резервного копирования БД.
Для этого нужно создать файл с расширением .sh
, например, backup_db.sh
:
vi backup_db.sh
И добавить в него следующее содержимое, где DB_PASS=
пароль от базы данных:
#!/bin/bash Задаём переменные для подключения к базе данных DB_USER="root" DB_PASS="password" DB_NAME="postfix" Определите путь и имя файла для сохранения дампа БД BACKUP_DIR="/tmp" DB_DUMP_FILE="${BACKUP_DIR}/postfix.sql" Создаём дамп БД mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${DB_DUMP_FILE}
Сохраните скрипт и убедитесь, что он имеет права на выполнение:
chmod +x backup_db.sh
Добавьте выполнение скрипта в ежедневный планировщик (cron).
Для этого откройте файл /etc/cron.daily/backup_db
для редактирования:
vi /etc/cron.daily/backup_db
Добавьте следующую строку, чтобы запланировать выполнение резервного копирования каждый день:
#!/bin/bash /path/to/your/backup_db.sh
Замените /path/to/your/backup_db.sh
на полный путь к вашему скрипту backup_db.sh
, который вы создали в первом шаге.
Сохраните файл и убедитесь, что он имеет права на выполнение:
chmod +x /etc/cron.daily/backup_db
Теперь резервное копирование БД будет выполняться ежедневно автоматически.
Восстановлению почтового сервера из резервной копии на базе данных PostgreSQL
1. Выполните установку почтового сервера, согласно инструкции
https://nct.r7-office.ru/doc.html?uid=342bcfa8-c3df-4d6c-b6aa-029f039477b6_433625 https://nct.r7-office.ru/doc.html?uid=08b87968-26a5-433a-8748-85d102d46b48_427489 https://nct.r7-office.ru/doc.html?uid=d88010f2-5254-441d-a57d-5e87aa6acff8_426816 https://nct.r7-office.ru/doc.html?uid=22b69614-87d1-4fc1-a42f-32e56c81b975_426817
2. Распакуйте архив с бэкапом
Произведите распаковку архива из директории куда он был загружен:
tar xzvf backup-mail.tar.gz --selinux -C /
3. Восстановите базу данных
Обновите базу до состояния выгрузки:
sudo -u postgres pg_restore -v -d postfix -c -j 1 -F c /mnt/backup/backup.sql
4. Произведите перезагрузку сервисов
sudo systemctl restart opendkim sudo systemctl restart spamassassin sudo systemctl restart mariadb sudo systemctl restart dovecot sudo systemctl restart postfix