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

Миграция Корпоративный сервер 2019 (Linux) на Корпоративный сервер 2024 (Linux) с помощью скрипта

Обновлено: 24.09.26

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

Миграция Корпоративный сервер 2019 (Linux) на Корпоративный сервер 2024 (Linux) с помощью скриптаОбратите внимание

Дисклеймер о текущих ограничениях и известных ошибках

Настоящий документ содержит информацию о текущих ограничениях и известных ошибках, обнаруженных при использовании инструмента миграции данных из Корпоративного сервера 2019 (далее - КС2019) в Корпоративный сервер 2024 (далее – КС2024). Мы стремимся обеспечить высокий уровень качества нашего продукта, однако на данный момент выявлены следующие проблемы, которые могут повлиять на функционирование и предупреждаем о возможных рисках его использования:

1. Интерфейс и настройки доступа:
  • В интерфейсе настроек доступа в КС2024 не отображаются права пользователей на документы, наследуемые от прав папок: Некоторые права пользователей могут не отображаться в интерфейсе КС2024, что может вводить в заблуждение при работе с делегированием прав на документы. При просмотре прав на документ отображаются только права выданные непосредственно на документ, права наследованные от папок не отображаются.
2. Права администратора:
  • Не мигрирует встроенная УЗ Администратора КС2019: Возможно отсутствие доступа к важному функционалу для отдельных групп пользователей.
  • Не мигрируют права администратора, выданные пользователю портала: Права администратора, выданные пользователям для работы с модулями портала, не переносятся в КС2024. Возможно отсутствие доступа к важному функционалу для отдельных групп пользователей.
3. Документы и папки:
  • Не мигрируют права на документы, добавленные в папку Общие с правами на Чтение: Возможна потеря доступа к отдельным документам.
4. Атрибуты пользователей:
  • Некорректно мигрируют даты создания пользователей: Даты создания учетных записей могут быть неправильно перенесены, что может искажать некоторую личную информацию пользователей.
  • Не мигрируют руководители пользователей: Информация о руководителях пользователей может быть потеряна. Необходимо ручное восстановление атрибутов пользователей.
  • Не мигрируют должности пользователей: Информация о должностях пользователей может быть потеряна. Необходимо ручное восстановление атрибутов пользователей.
  • Некорректно мигрирует телефонный код: Телефонные коды могут быть неправильно перенесены. Необходимо ручное восстановление атрибутов пользователей.
5. Проблемы доступа к информации:
  • При миграции УЗ с правами Гость получает права на редактирование к некоторым документам: Учетные записи с правами только на чтение могут получать непредусмотренные права на редактирование к некоторым документам, что может нарушать политику прав доступа к корпоративной информации. Под «некоторыми документами» понимаются документы КС2019 из папки «Общие», полный доступ к которым был выдан группе «Все». Для обхода данной ошибки перед выполнением миграции требуется исключить все УЗ с правами Гость из группы «Все».
  • Не мигрируют внешние ссылки на документы и папки: Возможно отсутствие доступа к определенным документам для отдельных групп пользователей.

Примечание: Обращаем внимание, что инструмент миграции находится в стадии активной разработки. В связи с этим просим не проводить миграцию без предварительного тестирования на непродуктивном контуре. Мы активно работаем над исправлением указанных ошибок и улучшаем функциональность инструмента миграции. Рекомендуем вам следить за обновлениями и устанавливать последние версии для получения исправлений и улучшений.

Приносим извинения за возможные неудобства и благодарим за ваше понимание и терпение. Для получения дополнительной информации или помощи, пожалуйста, обращайтесь в нашу службу поддержки.

1. Список необходимых пакетов и открытых портов

1.1. На Корпоративный сервер 2024 должны быть

1. dialog;
2. curl;
3. openssh-client / openssh-clients;
4. perl;
5. nfs-common или nfs-utils (NFS-клиент);
6. RabbitMQ-server (как часть установки Р7 Диска / Корпоративного сервера 2024).

Опционально:
1. sshpass (если использовать SSH по паролю);
2. firewalld или другие firewall-утилиты (ufw / iptables);
3. netcat и/или telnet для диагностики портов.

1.2. На Корпоративный сервер 2019 должны быть

1. nfs-kernel-server или nfs-utils (NFS-сервер);
2. openssh-server;
3. firewall-утилиты (firewalld / iptables / ufw) — желательно.

1.3. Между Корпоративный сервер 2019 и Корпоративный сервер 2024 должны быть открыты порты

1. SSH;
2. 3306 — порт для MySQL;
3. 2049 — порт nfs.

2. Назначение скрипта

Скрипт cs_migrate_interactive.sh автоматизирует миграцию Р7-Диска:

  • С Корпоративного сервера 2019 (старый сервер);
  • На Корпоративный сервер 2024 (новый сервер, где уже развернут Р7-Диск / Корпоративный сервер 2024).

Он:

  • Настраивает доступ к БД на Корпоративном сервере 2019;
  • Поднимает NFS между серверами;
  • Правит настройки Processing на Корпоративном сервере 2024;
  • Настраивает RabbitMQ для экспорта;
  • Запускает экспорт через API Р7-Диска и показывает прогресс по очередям;
  • По желанию отключает возможность повторной миграции (раздел 5 инструкции ↗).
Обратите внимание

Запускается только на Корпоративном сервере 2024 и только от root.

3. Подготовка перед запуском

3.1. На Корпоративном сервере 2024  (где будет запуск скрипта)

Должны быть установлены (кратко):

  • Dialog — интерфейс скрипта;
  • Curl — HTTP(S) запросы к Р7-Диску;
  • Openssh-client / openssh-clients — SSH на Корпоративном сервере 2019;
  • Perl — правка appsettings.json
  • Nfs-common или nfs-utils — NFS-клиент;
  • Rabbitmq-server + rabbitmq-plugins, rabbitmqctl — уже ставятся с Р7 Диском/Корпоративном сервере 2024 ;
  • Firewall-утилиты (firewalld / ufw / iptables) — для открытия/закрытия порта 15672
  • При использовании SSH по паролю — sshpass

Плюс:

  • На Корпоративном сервере 2024  уже должен быть установлен Р7-Диск/Корпоративном сервере 2024 ;
  • Системный пользователь, от которого хранятся файлы (обычно cddisk), должен существовать.

3.2. На Корпоративном сервере 2019 (старый сервер)

Нужно:

  • NFS-сервер (nfs-kernel-server или nfs-utils);
  • SSH-сервер (sshd);
  • Желательно firewall-утилиты (firewalld/iptables/ufw).

4. Запуск скрипта

MD5: 5B6B16DB15C850F9B8107A7B04E05F45.

На Корпоративном сервере 2024 :

chmod +x cs_migrate_interactive.sh
sudo ./cs_migrate_interactive.sh
Важно

Если dialog не установлен, скрипт попробует поставить его сам (при наличии доступа в интернет). Без dialog скрипт работать не будет.

5. Интерактивная часть: какие окна и в каком порядке

После запуска скрипт:

5.1. Приветственное окно

Кратко описывает, что он делает:

5.2. Параметры Корпоративный сервер 2019 и SSH

  1. Адрес Корпоративный сервер 2019.
    • IP или имя хоста сервера Корпоративный сервер 2019 — например 192.168.27.10 или cs2019.r7-office.ru

  1. SSH-пользователь.
    • По умолчанию root

  1. SSH-порт.
    • По умолчанию 22 (можно любой, который у тебя настроен).

  1. Выбор способа авторизации по SSH:Меню:
    • SSH по ключу (вставить закрытый ключ для текущей миграции).
      • Открывается окно с текстом-пояснением, затем editbox, куда нужно целиком вставить приватный ключ:
        • Строки -----BEGIN ... PRIVATE KEY----- … -----END ... PRIVATE KEY-----
          Или хотя бы содержимое.

          • Скрипт сохраняет ключ во временный файл в TMP_DIR, выставляет chmod 600 и использует только на время миграции. После завершения скрипта TMP_DIR удаляется (ключ уходит).
    • SSH по ключу (указать путь к ключу).
      • Предлагается ввести путь к существующему ключу, по умолчанию что-то вроде /root/.ssh/id_ed25519
    • SSH по логину/паролю (через sshpass).
      • Спрашивает пароль SSH-пользователя (логин берется из п.2);
      • Использует sshpass для авторизации (если sshpass нет — попытается установить).

5.3. Настройки MySQL-пользователя для миграции

Скрипт создаёт отдельного read-only пользователя на Корпоративном сервере 2019:

  • Спрашивает:
    • Имя пользователя: по умолчанию cddisk;
    • Пароль для этого пользователя.

Этот пользователь используется на Корпоративный сервер 2024 в строке подключения CommunityRepository.

5.4. Пользователь файлов на Корпоративный сервер 2024

  • Локальный пользователь Linux на Корпоративный сервер 2024, от имени которого хранятся файлы Р7-Диска
    — обычно cddisk.

UID/GID этого пользователя будут подставлены в /etc/exports на Корпоративном сервере 2019 (опции anonuid, anongid).

5.5. Каталог с файлами пользователей (на Корпоративный сервер 2019

Скрипт задаёт вопрос:

Каталог с файлами пользователей находится в
/var/www/r7-office/Data/Products/Files
Оставить этот путь?

  • Если жмёшь Да — используется путь по умолчанию;
  • Если жмёшь Нет — открывается окно ввода, куда можно вписать свой путь (например /data/r7disk/files).

Этот путь дальше используется:

  • В /etc/exports на Корпоративном сервере 2019;
  • В /etc/fstab на Корпоративном сервер 2024 (строка вида CS2019_HOST:FILES_PATH /mnt/cs nfs ...);
  • В cleanup — при чистке /etc/exports

5.6. Домен/URL Р7-Диска на Корпоративный сервер 2024

  • Доменное имя или IP Р7-Диска на Корпоративный сервер 2024
    – например disk4.test150.s7-office.site.

Скрипт старается автоматически подставить это из /etc/nginx/sites-available/cddisk (директива server_name), если файл существует.

5.7. Суперпользователь Р7-Диска

  • Имя: по умолчанию superadmin
  • Пароль: по умолчанию тоже superadmin (если оставить пустым при первом вводе, подставится superadmin).

Эти данные используются для:

  • Проверки авторизации на https://DISK_HOST/
  • Вызова API /api/v1/ExportFromCs/Start

5.8. Параметры для RabbitMQ

  • IP-адрес, с которого будешь открывать веб-интерфейс rabbitmq
    – обычно IP рабочего места админа. На его основе создаётся vhost в RabbitMQ.

  • Имя пользователя rabbitmq и пароль:
    • Создаётся/настраивается пользователь в RabbitMQ;
    • Ему выдаются права и тег administrator

5.9. Итоговое окно подтверждения

Сводка всех введённых параметров:

  • Адреса, пользователи, порты;
  • Путь с файлами;
  • Домен диска, superadmin;
  • Параметры RabbitMQ (IP, логин).

Вопрос: «Продолжить с этими параметрами?».

Если нажать Нет, скрипт вернётся к вводу и позволит всё поменять:

6. Что скрипт делает дальше (последовательность шагов)

После подтверждения параметров начинается «автоматическая часть».

В реальном времени всё сопровождается строчками вида:

==> Описание шага

В консоли и всплывающими окнами при ошибках.

6.1. Блок precheck

  1. Установка sshpass (если выбран SSH по паролю).
    • При необходимости пытается установить через пакетный менеджер.
  2. Проверка SSH к Корпоративный сервер 2019.
    • Команда ssh_cs2019 "echo ok"
    • Если не удаётся подключиться — ошибка и выход.
  3. Определение локального firewall (Корпоративный сервер 2024..
    • Смотрит, есть ли firewall-cmd, ufw или iptables, задаёт LOCAL_FW_TYPE
  4. Определение firewall на Корпоративный сервер 2019.
    • По SSH определяет, что стоит: firewalld, ufw, iptables или ничего.
  5. Проверка наличия mysql на Корпоративный сервер 2019.
    • Если клиенты MySQL/MariaDB не установлены — скрипт завершится с просьбой установить.
  6. Чтение настроек БД с Корпоративный сервер 2019.
    • По SSH читает /var/www/r7-office/WebStudio/web.connections.config
    • Из connectionString вытаскивает:
      • Database=... → MYSQL_DB
      • User ID=... → MYSQL_ROOT_USER
      • Password=... → MYSQL_ROOT_PASS
    • Если не получилось — спрашивает БД/логин/пароль MySQL root вручную.
  7. Проверка наличия пользователя файлов на Корпоративный сервер 2024.
    • Id CSDISK_USER; если нет — ошибка, нужно создать заранее.
  8. Проверка доступности MySQL на Корпоративный сервер 2019 по сети.
    • Проверяет порт 3306 на CS2019_HOST (через /dev/tcp, nc или telnet).

6.2. Проверка логина/пароля Р7-Диска

Функция check_r7_admin_credentials:

  1. Делает запрос:
    curl -k -u "R7_ADMIN_USER:R7_ADMIN_PASS" https://DISK_HOST/
  2. Если код 2xx или 3xx — всё ок, едем дальше;
  3. Если 401 Unauthorized:
    • Показывает окно с текстом, что логин/пароль неверны;
    • Предлагает ввести новый логин/пароль;
    • Повторы до 3 раз.
  4. Если другой код или после 3 попыток всё плохо — скрипт завершает работу с описанием ошибки.

6.3. Создание MySQL-пользователя для миграции Корпоративный сервер 2019

Функция create_mysql_user:

  • По SSH на Корпоративном сервере 2019 выполняется:
    CREATE USER IF NOT EXISTS 'MYSQL_USER'@'CS2024_IP'
      IDENTIFIED WITH mysql_native_password BY 'MYSQL_PASS';
    GRANT SELECT ON `MYSQL_DB`.* TO 'MYSQL_USER'@'CS2024_IP';
    FLUSH PRIVILEGES;

Права только на чтение всей БД MYSQL_DB.

6.4. Настройка NFS на Корпоративный сервер 2019

Функция configure_nfs_cs2019:

  1. Берёт uid/gid пользователя CSDISK_USER на Корпоративный сервер 2024;
  2. На Корпоративном сервере 2019 устанавливает NFS-сервер (nfs-kernel-server/nfs-utils и т.п.), включает и запускает службу;
  3. Формирует строку для /etc/exports:
    FILES_PATH CS2024_IP/32(rw,nohide,all_squash,anonuid=UID,anongid=GID,no_subtree_check)
  4. Добавляет её в /etc/exports (если ещё нет), делает exportfs -ra
  5. Открывает порты 2049/tcp и 2049/udp на firewall Корпоративном сервере 2019;
  6. Проверяет доступность порта 2049 на CS2019_HOST

6.5. Остановка сессий документов на Корпоративный сервер 2019

Функция prepare_ds_shutdown_cs2019:

  • По SSH запускает /usr/bin/documentserver-prepare4shutdown.sh, если он существует и исполним;
  • Если файла нет — выводит предупреждение, но не падает.

6.6. Настройка NFS-клиента на Корпоративном сервер 2024

Функция configure_nfs_cs2024:

  1. Устанавливает NFS-клиент (nfs-common/nfs-utils), если его ещё нет;
  2. Создаёт каталог /mnt/cs
  3. Добавляет в /etc/fstab строку:
    CS2019_HOST:FILES_PATH /mnt/cs nfs defaults 0 2

    Важно

    Только если строки с /mnt/cs ещё нет.

  4. Выполняет mount -a — монтирует /mnt/cs

6.7. Настройка Processing на Корпоративный сервер 2024

Функция configure_processing_cs2024:

1. Проверяет /opt/r7-office/Processing/services.json на наличие ExportDataFromCsMessageHandler:

  • Если есть — ок;
  • Если нет — пишет предупреждение, что блок нужно добавить вручную по инструкции.

2. Настраивает ConnectionStrings.CommunityRepository в /opt/r7-office/Processing/appsettings.json:

  • Делает backup appsettings.json.bak.<дата>
  • Через perl -0pi -e заменяет строку:
    "CommunityRepository": "..."

    На:

    "CommunityRepository": "Server=CS2019_HOST;UserID=MYSQL_USER;Password=MYSQL_PASS;Database=MYSQL_DB;SslMode=none"

6.8. Настройка RabbitMQ на Корпоративный сервер 2024

Функция configure_rabbitmq_cs2024:

  1. Проверяет наличие rabbitmq-plugins — если нет, пишет предупреждение и пропускает этап;
  2. Включает web-интерфейс:rabbitmq-plugins enable rabbitmq_management systemctl restart rabbitmq-server.;
  3. Создаёт/обновляет пользователя:
    rabbitmqctl add_user RABBIT_USER RABBIT_PASS
    
    rabbitmqctl set_permissions -p / RABBIT_USER ".*" ".*" ".*"
    
    rabbitmqctl add_vhost ADMIN_IP
    
    rabbitmqctl set_permissions -p ADMIN_IP RABBIT_USER ".*" ".*" ".*"
    
    rabbitmqctl set_user_tags RABBIT_USER administrator
  4. Открывает порт 15672/tcp на локальном firewall;
  5. Проверяет доступность 15672 на CS2024_IP

7. Запуск экспорта и отображение прогресса

7.1. Запуск экспорта

Функция start_export:

  1. Вызывает:
    curl -k -u "R7_ADMIN_USER:R7_ADMIN_PASS" \ https://DISK_HOST/api/v1/ExportFromCs/Start
  2. Смотрит HTTP-код и тело:
    • Если код 2xx и в JSON есть "Status":1 — считает, что экспорт успешно стартовал;
    • Показывает окно с HTTP-кодом и ответом;
    • Переходит к прогресс-бару.
  3. Если 401 Unauthorized:
    • Показывает окно с пояснением;
    • Предлагает ввод логина/пароля заново;
    • Повторяет попытку до успешного ответа или отказа.
  4. При других кодах:
    • Показывает окно с HTTP-кодом и текстом ответа/ошибок;
    • Завершает выполнение с ошибкой.

7.2. Отображение прогресса по очередям RabbitMQ

Функция show_migration_progress:

  • Каждые 5 секунд выполняет:
    rabbitmqctl list_queues name messages -p /
  • Считывает количество сообщений в:
    • Import.User.From.Cs — пользователи в процессе;
    • Export.Data.From.Cs — файлы в процессе.
  • На основе этих чисел оценивает процент (от 5% до 95%) и кормит их dialog --gauge:
    • Когда обе очереди обнулятся, отдаёт 100% и выходим из цикла.

Это даёт живой прогресс-бар по ходу миграции.

8. Отключение миграции

После завершения экспорта и закрытия прогресс-бара появляется вопрос:

Хотите сейчас ОТКЛЮЧИТЬ возможность повторной миграции?

Если выбрать Да, вызывается cleanup_after_export:

  1. На Корпоративный сервер 2019:
    • Удаляет MySQL-пользователя MYSQL_USER@CS2024_IP
    • Чистит /etc/exports от строки с FILES_PATH CS2024_IP/32
    • Exportfs -ra
    • Останавливает и отключает nfs-server
    • Закрывает порты 2049/tcp и 2049/udp на firewall;
    • Перезапускает службы DocumentServer (ds-docservice.service, ds-converter.service, ds-metrics.service — если есть).
  2. На Корпоративный сервер 2024:
    • Отключает плагин rabbitmq_management
    • Закрывает порт 15672/tcp в локальном firewall;
    • Удаляет строку /mnt/cs из /etc/fstab (если она там есть);
    • Выполняет umount -l -f /mnt/cs (с timeout, чтобы не «висеть»).

В конце пишет:

==> Очистка после миграции завершена.

8.1. Финальное окно

В самом конце — окно:

Основные шаги миграции выполнены.
Проверь работу портала и данных.

После этого скрипт завершает работу.

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

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

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