# Миграция 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 часов) ```bash # На 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 ```bash 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 ```bash # Создать папки (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: Сканирование файлов ```bash 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): ```bash # Получить новые 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) — ЗАВЕРШЕНА - Rsync завершён 04.03.2026 17:50, 2.9TB, chown done - groupfolders:scan выполнен: 458,677 файлов, 32,803 каталогов, 0 ошибок - Папка 1 "Общий ресурс" (1.5TB): группы Редактирование, НИИКН, admin - Папка 2 "ГИКЭ_ВОКН_Москва" (1.2TB): группы work(test), ДКН, Фотофиксация ВОКН Москва, admin - Диск VM 108: /dev/sdb1 4.4T (85% занято, 651GB свободно)