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

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

Обновлено: 05.03.26

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

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 ↗.

 

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

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

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