Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы документов
Редакторы документов
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
ВКС и мессенджер
ВКС и мессенджер
Мобильные редакторы
Мобильные редакторы
Почтовый сервер
Почтовый сервер
Органайзер
Органайзер
Сервер лицензирования
Сервер лицензирования
Файл-Экспресс
Файл-Экспресс
Аналитика
Аналитика
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Резервное копирование/восстановление Корпоративный сервер 2024

Обновлено: 24.09.26

Инструкция актуальна для версии продукта: 2025.3.18.15967

Резервное копирование

1. Резервное копирование нужно выполнить для директории и БД PostgreSQL:

/opt/r7-office 
/etc/supervisor 
/etc/r7-office 
/var/r7-office 
/var/www/r7-office

2. Установите утилиту сжатия lbzip2 (если новый сервер):

sudo apt install lbzip2

Для Astra linux выполните следующие команды:

sudo wget -c http://archive.ubuntu.com/ubuntu/pool/universe/l/lbzip2/lbzip2_2.5-2_amd64.deb 
sudo apt-get install ./lbzip2_2.5-2_amd64.deb

3. Запустите скрипт recovery_r7disk.sh:

#!/bin/bash

# Директория, где будет создан бекап
backup_dir=/backup
# Директория на сервере хранения бекапа
backup_server_dir=/backup/corpportal
# IP сервера бекапа
backup_server_ip=172.16.10.10
# Количество потоков для lbzip2, равное числу ядер делённых на 2
num_cores=$(($(nproc)/2))
# Дата бекапа
backup_date=$(date +'%Y-%m-%d')

# Создание директории
mkdir -p "$backup_dir"

# Проверка, установлен ли lbzip2
if ! command -v lbzip2 &> /dev/null; then
echo "Ошибка: lbzip2 не установлен. Установите lbzip2 и повторите попытку."
exit 1
fi

# Функция для определения ОС и каталога для бекапа
get_directory_supervisor() {
if [ -f /etc/os-release ]; then
. /etc/os-release
case $ID in
"redos" | "altlinux")
echo "/etc/supervisord.d"
;;
"astra")
echo "/etc/supervisor"
;;
*)
echo "Операционная система не определена или не поддерживается."
exit 1
;;
esac
else
echo "Файл /etc/os-release не найден. Невозможно определить ОС."
exit 1
fi
}

# Получаем каталог для бекапа
supervisor_dir=$(get_directory_supervisor)

# Время начала бекапирования
start_time=$(date +'%Y-%m-%d %H:%M:%S')
echo "Начало резервного копирования: $start_time" >> "$backup_dir/time_log"

# Пути к дампам
cddisk_dump_file="$backup_dir/cddisk_db.tar.gz"
pagesdb_dump_file="$backup_dir/pagesdb_db.tar.gz"

# Дамп базы cddisk (custom format)
pg_dump -h localhost -U cddisk -d cddisk -F c -c -f "$cddisk_dump_file"

# Дамп базы pagesdb (ИДЕНТИЧНО cddisk: custom format)
pg_dump -h localhost -U cddisk -d pagesdb -F c -c -f "$pagesdb_dump_file"

# Архив с бэкапом (оба дампа внутри)
tar cf "$backup_dir/cddisk-${backup_date}.tar.bz2" \
--selinux \
--use-compress-prog="lbzip2 -k -n$num_cores" \
/opt/r7-office \
"$supervisor_dir" \
/etc/r7-office \
/var/r7-office \
/var/www/r7-office \
"$cddisk_dump_file" \
"$pagesdb_dump_file"

# Время завершения бекапирования
end_time=$(date +'%Y-%m-%d %H:%M:%S')
echo "Завершение резервного копирования: $end_time" >> "$backup_dir/time_log"

# Время в секундах работы бекапирования
start_timestamp=$(date -d "$start_time" +%s)
end_timestamp=$(date -d "$end_time" +%s)
total_duration=$((end_timestamp - start_timestamp))
echo "Общее время выполнения: $total_duration секунд" >> "$backup_dir/time_log"

# Удаление дампов после упаковки
rm -f "$cddisk_dump_file" "$pagesdb_dump_file"

# Перенос бекапа на сервер хранения
# scp "$backup_dir/cddisk-${backup_date}.tar.bz2" root@"$backup_server_ip":"$backup_server_dir"/
# Удаление бекапа после переноса
# rm -f "$backup_dir/cddisk-${backup_date}.tar.bz2"

echo "Резервное копирование завершено"

Восстановление Корпоративный сервер 2024

1. Установите утилиту сжатия lbzip2 (если новый сервер):

sudo apt install lbzip2

Для Astra linux выполните следующие команды:

sudo wget -c http://archive.ubuntu.com/ubuntu/pool/universe/l/lbzip2/lbzip2_2.5-2_amd64.deb 
sudo apt-get install ./lbzip2_2.5-2_amd64.deb

2. Запустите скрипт recovery_r7disk.sh:

#!/bin/bash

# Введите полный путь к архиву с бэкапом Корпоративный сервер 2024
read -p "Введите полный путь к архиву с бэкапом Корпоративный сервер 2024 в системе: " archive_path

# Количество потоков для pg_restore, равное числу ядер, умноженных на 2
num_cores_db=$(( $(nproc) * 2 ))
# Количество потоков для lbzip2, равное числу ядер
num_cores=$(nproc)

# Проверка существования архива
if [ ! -f "$archive_path" ]; then
echo "Указанный файл не существует"
exit 1
fi

# Восстановление файлов
tar xf "$archive_path" --selinux -C / --use-compress-prog="lbzip2 -k -n$num_cores"

# Получаем пути дампов БД (после распаковки они должны оказаться в /backup)
cddisk_dump_file=$(find / -path /proc -prune -o -name cddisk_db.tar.gz -print -quit)
pagesdb_dump_file=$(find / -path /proc -prune -o -name pagesdb_db.tar.gz -print -quit)

# Восстановление базы cddisk
if [ -n "$cddisk_dump_file" ] && [ -e "$cddisk_dump_file" ]; then
pg_restore -v -h localhost -U cddisk -d cddisk -c -j "$num_cores_db" -F c "$cddisk_dump_file"
rm -f "$cddisk_dump_file"
else
echo "Предупреждение: дамп базы cddisk не найден (cddisk_db.tar.gz)"
fi

# Восстановление базы pagesdb
if [ -n "$pagesdb_dump_file" ] && [ -e "$pagesdb_dump_file" ]; then
pg_restore -v -h localhost -U cddisk -d pagesdb -c -j "$num_cores_db" -F c "$pagesdb_dump_file"
rm -f "$pagesdb_dump_file"
else
echo "Предупреждение: дамп базы pagesdb не найден (pagesdb_db.tar.gz)"
fi

# Обновляем права на каталоги
chown -R cddisk:cddisk /opt/r7-office/Api
chown -R cddisk:cddisk /opt/r7-office/Processing
chown -R cddisk:cddisk /opt/r7-office/FileStorage
chown -R cddisk:cddisk /opt/r7-office/installtools
chown -R cddisk:cddisk /var/r7-office
chown -R ds:ds /var/www/r7-office/documentserver

# Перезапускаем службы
systemctl restart supervisor.service
systemctl restart nginx

# Перезапускаем сервисы Корпоративного сервера 2024
sleep 5
supervisorctl restart all

echo "Восстановление завершено"

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

Для резервного копирования и восстановления почтового сервера следуйте инструкции: Инструкция по резервному копированию и восстановлению почтового сервера на базе данных PostgreSQL ↗.

 

Была ли эта статья полезной?

Поделитесь пожалуйста своим мнением

      В статье есть ошибкиРекомендации не помоглиТекст трудно понятьСодержание статьи не соответствует заголовкуДругое