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

4.7 KiB
Raw Permalink Blame History

Инструкция по восстановлению удаленных файлов и защите от повторных удалений

📋 Что было сделано:

  1. Создан скрипт для настройки Nextcloud (fix_nextcloud_settings.php)
  2. Создан скрипт для восстановления файлов (restore_all_deleted_files.php)
  3. Создан скрипт для регулярной индексации (nextcloud_scan_files.sh)

🚀 Порядок выполнения:

Шаг 1: Настройка Nextcloud (защита от удалений)

cd /var/www/fastuser/data/www/crm.clientright.ru
php fix_nextcloud_settings.php

Что делает:

  • Отключает DeleteOrphanedItems (главная причина удалений)
  • Включает readonly для External Storage
  • Увеличивает retention корзины до 365 дней
  • Создает скрипт для регулярной индексации

Шаг 2: Восстановление файлов (сначала проверка)

Сначала проверка (dry-run):

php restore_all_deleted_files.php --dry-run

Это покажет, сколько файлов будет восстановлено без реального восстановления.

Ограничение количества (для теста):

php restore_all_deleted_files.php --dry-run 100

Восстановление всех файлов:

php restore_all_deleted_files.php

Восстановление с ограничением (для безопасности):

php restore_all_deleted_files.php "" 1000

Восстановление только файлов проекта:

php restore_all_deleted_files.php "" "" "crm2/CRM_Active_Files/Documents/Project/"

Шаг 3: Настройка регулярной индексации

Добавить в crontab:

crontab -e

Добавить строку:

0 */6 * * * /var/www/fastuser/data/www/crm.clientright.ru/nextcloud_scan_files.sh

Это будет сканировать файлы каждые 6 часов.

Или сканировать только внешнее хранилище (быстрее): Отредактируйте nextcloud_scan_files.sh и раскомментируйте строку:

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:

docker exec -u www-data nextcloud-fresh php occ background-job:list

Проверить настройки External Storage:

docker exec -u www-data nextcloud-fresh php occ files_external:list

Проверить retention корзины:

docker exec -u www-data nextcloud-fresh php occ config:app:get files trashbin_retention_obligation

Проверить логи восстановления:

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