• Post category:Настройки
  • Запись изменена:24.01.2024

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

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

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

2) Установите утилиту сжатия lbzip2:

sudo apt install lbzip2

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

# время начала бекапирования
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 /etc/supervisor /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

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 "Восстановление завершено"