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

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

Обновлено: 24.12.25

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

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. Запустите скрипт backup_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
# Удаление старых бекапов
# rm -f $backup_dir/cddisk-*.tar.bz2
# Проверка, установлен ли 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

# Создание дампа базы данных
pg_dump -h localhost -U cddisk -d cddisk -F c -c -f "$backup_dir/cddisk_db.tar.gz"

# Создание архива с бэкапом
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 "$backup_dir/cddisk_db.tar.gz"

# Время завершения бекапирования
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 "$backup_dir/cddisk_db.tar.gz"

# Перенос бекапа на сервер хранения
# 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

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

# Получаем путь дампа БД
db_dump_file=$(find / -path /proc -prune -o -name cddisk_db.tar.gz -print)
# Проверяем на существование дампа
if [ -e "$db_dump_file" ]; then
# Восстановление из дампа
pg_restore -v -h localhost -U cddisk -d cddisk -c -j "$num_cores_db" -F c "$db_dump_file"
# Удаляем файл дампа
rm -f "$db_dump_file"
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 ↗.