228 lines
11 KiB
Markdown
228 lines
11 KiB
Markdown
# Миграция 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 работает во время копирования) |
|
||
|
||
<!-- AUTO-SYNC FROM MEMORY.MD - DO NOT EDIT BELOW -->
|
||
## Миграция НИИКН 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
|
||
<!-- END AUTO-SYNC -->
|