Files
crm.clientright.ru/RESTORE_INSTRUCTIONS.md
Fedor 840acca51a feat(documents): дедупликация documents_meta и исправление field_label
- Исправлен N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js: использовать uploads_field_labels[0] вместо [grp]
- Создан SQL_CLAIMSAVE_FIXED_NEW_FLOW_DEDUP.sql с дедупликацией documents_meta
- Создан SQL_CLEANUP_DOCUMENTS_META_DUPLICATES.sql для очистки существующих дубликатов
- Создан полный уникальный индекс idx_document_texts_hash_unique на document_texts(file_hash)
- Добавлен SESSION_LOG_2025-11-28_documents_dedup.md с описанием всех изменений

Fixes:
- field_label теперь корректно отображает 'Переписка' вместо 'group-2'
- documents_meta не накапливает дубликаты при повторных сохранениях
- ON CONFLICT (file_hash) теперь работает для document_texts
2025-11-28 18:16:53 +03:00

147 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Инструкция по восстановлению удаленных файлов и защите от повторных удалений
## 📋 Что было сделано:
1. ✅ Создан скрипт для настройки Nextcloud (`fix_nextcloud_settings.php`)
2. ✅ Создан скрипт для восстановления файлов (`restore_all_deleted_files.php`)
3. ✅ Создан скрипт для регулярной индексации (`nextcloud_scan_files.sh`)
---
## 🚀 Порядок выполнения:
### Шаг 1: Настройка Nextcloud (защита от удалений)
```bash
cd /var/www/fastuser/data/www/crm.clientright.ru
php fix_nextcloud_settings.php
```
**Что делает:**
- Отключает `DeleteOrphanedItems` (главная причина удалений)
- Включает `readonly` для External Storage
- Увеличивает retention корзины до 365 дней
- Создает скрипт для регулярной индексации
---
### Шаг 2: Восстановление файлов (сначала проверка)
**Сначала проверка (dry-run):**
```bash
php restore_all_deleted_files.php --dry-run
```
Это покажет, сколько файлов будет восстановлено без реального восстановления.
**Ограничение количества (для теста):**
```bash
php restore_all_deleted_files.php --dry-run 100
```
**Восстановление всех файлов:**
```bash
php restore_all_deleted_files.php
```
**Восстановление с ограничением (для безопасности):**
```bash
php restore_all_deleted_files.php "" 1000
```
**Восстановление только файлов проекта:**
```bash
php restore_all_deleted_files.php "" "" "crm2/CRM_Active_Files/Documents/Project/"
```
---
### Шаг 3: Настройка регулярной индексации
**Добавить в crontab:**
```bash
crontab -e
```
**Добавить строку:**
```
0 */6 * * * /var/www/fastuser/data/www/crm.clientright.ru/nextcloud_scan_files.sh
```
Это будет сканировать файлы каждые 6 часов.
**Или сканировать только внешнее хранилище (быстрее):**
Отредактируйте `nextcloud_scan_files.sh` и раскомментируйте строку:
```bash
docker exec -u www-data nextcloud-fresh php occ files:scan --path="/crm"
```
---
## 📊 Статистика удалений:
- **Всего delete markers:** ~25,200
- **Пик удалений:** 1 ноября 2025, 09:00 утра (7,080 файлов)
- **Причина:** DeleteOrphanedItems в Nextcloud
---
## ⚠️ ВАЖНО:
1. **Сначала настройте Nextcloud** (Шаг 1), чтобы предотвратить новые удаления
2. **Проверьте dry-run** перед массовым восстановлением
3. **Восстанавливайте постепенно** (по 1000-5000 файлов за раз)
4. **Проверяйте логи** после восстановления
---
## 🔍 Проверка статуса:
**Проверить статус задач Nextcloud:**
```bash
docker exec -u www-data nextcloud-fresh php occ background-job:list
```
**Проверить настройки External Storage:**
```bash
docker exec -u www-data nextcloud-fresh php occ files_external:list
```
**Проверить retention корзины:**
```bash
docker exec -u www-data nextcloud-fresh php occ config:app:get files trashbin_retention_obligation
```
**Проверить логи восстановления:**
```bash
ls -lh /var/www/fastuser/data/www/crm.clientright.ru/restore_log_*.json
```
---
## 🛡️ Защита от повторных удалений:
После выполнения всех шагов система будет защищена:
1. ✅ DeleteOrphanedItems отключен
2. ✅ External Storage в режиме readonly
3. ✅ Retention корзины увеличен до 365 дней
4. ✅ Регулярная индексация файлов настроена
---
## 📝 Логи:
- Логи восстановления: `restore_log_YYYY-MM-DD_HH-MM-SS.json`
- Логи индексации: `/var/log/nextcloud_scan.log`
---
## 🆘 Если что-то пошло не так:
1. Проверьте логи восстановления
2. Проверьте доступность Docker контейнера Nextcloud
3. Проверьте права доступа к S3
4. Проверьте логи Nextcloud: `docker logs nextcloud-fresh`