Files
knowledge-base/projects/niikn/groupfolders-migration.md
2026-03-04 15:45:23 +00:00

11 KiB
Raw Blame History

Миграция Groupfolders: VM 100 → VM 108

Дата: 03.03.2026 Статус: Подготовлено, ожидает увеличения диска


Источник: VM 100 (Cloud-NIIKN, старый NC)

  • IP: 192.168.1.245
  • NC data: /mnt/nc-data/ (4.1 TB диск sdb, занято 3.7 TB)
  • SSH: root, ключ niikn-helper@clawdbot-1 (добавлен 03.03.2026)
  • Groupfolders path: /mnt/nc-data/__groupfolders/

Данные

ID Путь Название Размер
1 __groupfolders/1/ Общий ресурс 1.5 TB
2 __groupfolders/2/ ГИКЭ_ВОКН_Москва 1.2 TB
__groupfolders/versions/ Версии файлов 84 GB
__groupfolders/trash/ Корзина 7.6 GB
__groupfolders/onlyoffice/ OnlyOffice locks 213 MB
Итого ~2.8 TB

Права (oc_group_folders_groups)

Папка Группа Permissions Расшифровка
1 (Общий ресурс) НИИКН 23 read, write, share
1 (Общий ресурс) admin 31 read, write, share, delete
1 (Общий ресурс) Редактирование 31 read, write, share, delete
2 (ГИКЭ_ВОКН_Москва) Фотофиюксация ВОКН Москва 23 read, write, share
2 (ГИКЭ_ВОКН_Москва) admin 31 read, write, share, delete
2 (ГИКЭ_ВОКН_Москва) test 23 read, write, share
2 (ГИКЭ_ВОКН_Москва) ДКН 23 read, write, share

Управление (oc_group_folders_manage)

Папка Тип Управляющий
1 group admin
2 group admin

ACL (oc_group_folders_acl) — Advanced Permissions

Папка/FileID Тип Пользователь Mask Permissions
523107 user ulyanova140@gmail.com 31 31 (full)
2171076 user maksimmaul@gmail.com 0 0 (deny)
3381694 user admin 0 0 (deny)
1227009 user ccpupt@mail.ru 15 15
3684395 user aan@labexp.ru 13 13
1345540 user op.shishova@yandex.ru 31 31 (full)
1345540 user 19761113@mail.ru 31 31 (full)
1345628 user 19761113@mail.ru 31 31 (full)
1345628 user op.shishova@yandex.ru 31 31 (full)
1345628 user admin 31 31 (full)

Примечание: ACL привязаны к fileid, которые на новом NC будут другими. ACL нужно будет переназначить после files:scan по путям файлов.

Настройки папок (oc_group_folders)

folder_id mount_point quota acl
1 Общий ресурс -3 (unlimited) 1 (enabled)
2 ГИКЭ_ВОКН_Москва -4 (unlimited) 1 (enabled)

Приёмник: VM 108 (Nextclaud-AIO, новый NC)

  • IP: 192.168.1.200
  • NC data: /mnt/ncdata/ (sdb1, 3.9 TB, занято 3.1 TB, свободно 626 GB)
  • Groupfolders app: установлен (v20.1.12)
  • Группы: НИИКН, admin, Редактирование, Фотофиюксация ВОКН Москва, ДКН, test — все есть
  • Текущие External Storage (ID 4, 5) нужно удалить перед миграцией

План миграции

Шаг 0: Увеличить диск

  • Пользователь увеличивает /mnt/ncdata (sdb1) минимум на 3 TB
  • После увеличения: resize2fs /dev/sdb1

Шаг 1: Копирование данных (10-15 часов)

# На VM 108:
rsync -avP --info=progress2 \
  root@192.168.1.245:/mnt/nc-data/__groupfolders/ \
  /mnt/ncdata/data/__groupfolders/

# Исправить владельца
chown -R www-data:www-data /mnt/ncdata/data/__groupfolders/

Шаг 2: Удалить External Storage

docker exec -u www-data nextcloud-aio-nextcloud php occ files_external:delete 4
docker exec -u www-data nextcloud-aio-nextcloud php occ files_external:delete 5

Шаг 3: Создать Groupfolders

# Создать папки (ID будут 1 и 2 если первые)
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:create "Общий ресурс"
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:create "ГИКЭ_ВОКН_Москва"

# Назначить группы с правами
# Папка 1 — Общий ресурс
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 1 НИИКН write share
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 1 admin write share delete
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 1 Редактирование write share delete

# Папка 2 — ГИКЭ_ВОКН_Москва
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 2 "Фотофиюксация ВОКН Москва" write share
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 2 admin write share delete
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 2 test write share
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 2 ДКН write share

# Включить ACL
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:acl 1 true
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:acl 2 true

# Управление — admin
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:manage 1 group admin
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:manage 2 group admin

# Квоты unlimited
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:quota 1 unlimited
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:quota 2 unlimited

Шаг 4: Сканирование файлов

docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:scan 1
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:scan 2

Шаг 5: Восстановить ACL по путям

ACL привязаны к fileid. После scan fileid будут другие. Ниже — маппинг путей для восстановления.

Папка 1 (Общий ресурс):

Путь внутри папки Пользователь Mask Permissions Смысл
Казань/ТОМ 2 УТВЕРЖДАЕМАЯ ЧАСТЬ ВЫВОДЫ maksimmaul@gmail.com 0 0 запрет
.stfolder admin 0 0 запрет
2024/Вологда_2024/Дополнительная фотофиксация (Интерьер)/12) 31. Ледник И.П,Дружининского из деревни Окуловской ccpupt@mail.ru 15 15 r/w/delete (no share)
2025/Иркутск_2025/Выписки ЕГРН aan@labexp.ru 13 13 r/delete (no write/share)

Папка 2 (ГИКЭ_ВОКН_Москва):

Путь внутри папки Пользователь Mask Permissions Смысл
Образцы актов op.shishova@yandex.ru 31 31 полный доступ
Образцы актов 19761113@mail.ru 31 31 полный доступ
/ (корень папки) 19761113@mail.ru 31 31 полный доступ
/ (корень папки) op.shishova@yandex.ru 31 31 полный доступ
/ (корень папки) admin 31 31 полный доступ

Скрипт восстановления ACL (выполнить после scan):

# Получить новые fileid по путям и вставить ACL
docker exec nextcloud-aio-database psql -U oc_nextcloud -d nextcloud_database -c "
-- ACL для папки 1 (Общий ресурс)
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
SELECT fc.fileid, 'user', 'maksimmaul@gmail.com', 0, 0
FROM oc_filecache fc WHERE fc.path = '__groupfolders/1/Казань/ТОМ 2 УТВЕРЖДАЕМАЯ ЧАСТЬ  ВЫВОДЫ';

INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
SELECT fc.fileid, 'user', 'ccpupt@mail.ru', 15, 15
FROM oc_filecache fc WHERE fc.path LIKE '__groupfolders/1/2024/Вологда_2024/Дополнительная фотофиксация%Ледник%';

INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
SELECT fc.fileid, 'user', 'aan@labexp.ru', 13, 13
FROM oc_filecache fc WHERE fc.path = '__groupfolders/1/2025/Иркутск_2025/Выписки ЕГРН';

-- ACL для папки 2 (ГИКЭ_ВОКН_Москва) — корень
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
SELECT fc.fileid, 'user', '19761113@mail.ru', 31, 31
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2';

INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
SELECT fc.fileid, 'user', 'op.shishova@yandex.ru', 31, 31
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2';

INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
SELECT fc.fileid, 'user', 'admin', 31, 31
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2';

-- ACL для папки 2 — Образцы актов
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
SELECT fc.fileid, 'user', 'op.shishova@yandex.ru', 31, 31
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2/Образцы актов';

INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
SELECT fc.fileid, 'user', '19761113@mail.ru', 31, 31
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2/Образцы актов';
"

Оценки

Параметр Значение
Объём данных ~2.8 TB
Нужно свободного места ≥3 TB на ncdata
Время rsync 10-15 часов
Время настройки ~30 мин
Downtime NC 0 (NC работает во время копирования)

Миграция НИИКН Groupfolders (VM 100 → VM 108)

  • Источник: root@192.168.1.245:/mnt/nc-data/__groupfolders/ (VM 100, NV)
  • Назначение: /mnt/ncdata/__groupfolders/ на VM 108 (192.168.1.200, hostname: cloud)
  • VM 108 доступ: через jump-host clawdbot-1 (10.0.0.237) → SSH root@192.168.1.200
  • Диск VM 108: /dev/sdb1 4.4T, datadirectory=/mnt/ncdata
  • Rsync запущен 03.03.2026 через nohup, лог: /root/rsync-groupfolders.log
  • Статус на 04.03.2026 16:30: 99%, 2.76TB, 438K+ файлов, ~1064 осталось из 473193
  • Диск /mnt/ncdata: 3.5T/4.4T (84%)
  • После rsync: создать Groupfolders в NC, назначить группы, occ files:scan --all