# Инструкция по восстановлению удаленных файлов и защите от повторных удалений ## 📋 Что было сделано: 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`