Как автоматически очистить корзину удаленных файлов Nextcloud

В Nextcloud уже есть все необходимые компоненты для автоматической очистки удаленных файлов, поэтому большинству администраторов не требуется собственный скрипт оболочки. Согласно текущей документации по администрированию Nextcloud 35, рекомендуемый подход по-прежнему заключается в сочетании определенной политики хранения в корзине с надежным фоновым выполнением задач. Важная деталь заключается в том, что autoполитика по умолчанию не то же самое, что «удалять все ровно через 30 дней». Она хранит удаленные элементы не менее 30 дней, а затем делает их доступными для очистки, когда требуется освободить место.

Если ваша цель — предсказуемая очистка, установите явное максимальное время хранения и убедитесь, что фоновые задания Nextcloud выполняются через системный cron. Приведенные ниже шаги используют только поведение, описанное Nextcloud, и также объясняют, когда команды occ trashbin:expireи trashbin:cleanupуместны.

Что на самом деле делает автоматическая уборка мусорного ведра?

Когда приложение «Удаленные файлы» ( files_trashbin) включено, удаленные пользователями файлы перемещаются в корзину, а не удаляются немедленно. Это дает пользователям возможность восстановить удаленные файлы, но они все равно занимают место в памяти. Nextcloud управляет временем их хранения с помощью настройки trashbin_retention_obligationв config/config.php.

В текущей документации по настройке корзины Nextcloud определены следующие формы политик:

ПараметрЗначениеХорошо подходит
autoХраните вещи не менее 30 дней; после этого, когда потребуется освободить место, извлеките подходящие вещи.Небольшие установки, которые довольны поведением по умолчанию.
D, autoХраните вещи не менее D дней, затем проведите уборку, исходя из имеющегося пространства.Необходимо установить минимальный период для восстановления, но нет жесткого крайнего срока для удаления.
auto, DГарантируем удаление данных через D дней, при этом сохраняя возможность более ранней очистки, инициированной свободным пространством.Вам нужен максимальный срок хранения, но вы можете допустить более раннее удаление при возникновении проблем с хранением.
D1, D2Храните элементы не менее D1 дней и удаляйте их, когда их количество превысит D2 дня.Необходимо установить как минимальный период восстановления, так и чётко определённый максимальный срок хранения.
disabledОтключить автоматическое удаление элементов из корзины.Только в том случае, если неограниченное хранение данных является преднамеренным, а рост объема хранилища регулируется иным способом.

Есть еще одно правило хранения, которое следует помнить: если квота пользователя превышена из-за удаленных файлов, Nextcloud может проигнорировать настройку срока хранения и очистить ненужные файлы до тех пор, пока не будут выполнены требования квоты. Именно поэтому срок хранения не следует рассматривать как гарантию неизменяемого резервного копирования.

Шаг 1: Прежде чем что-либо менять, выберите политику хранения данных.

Определите, для чего в вашей среде предназначена корзина. Если пользователи часто восстанавливают случайно удаленные файлы, установите для них осмысленный минимальный временной интервал. Если для вас приоритетны ограниченные ресурсы хранилища или документированная политика хранения данных, определите также и максимальный объем.

Например, эта настройка позволяет в любое время выполнять очистку по объему памяти, но гарантирует удаление файлов старше 30 дней:

'trashbin_retention_obligation' => 'auto, 30',

Если вы хотите, чтобы удаленные файлы сохранялись как минимум 30 дней и удалялись по истечении 30 дней, используйте вместо этого ограниченную политику:

'trashbin_retention_obligation' => '30, 30',

Выберите значения, соответствующие вашим требованиям к восстановлению. Более короткий период позволяет быстрее освободить место на диске, но сокращает время, необходимое пользователям для восстановления файлов. Более длительный период обеспечивает больше времени на восстановление, но может увеличить нагрузку на диск.

Шаг 2: Установите параметр trashbin_retention_obligation в файле config.php.

Откройте конфигурационный файл Nextcloud, обычно расположенный в config/config.phpкаталоге установки. Добавьте или измените параметр внутри $CONFIGмассива. Типичный пример:

<?php
$CONFIG = array (
  // Other Nextcloud settings...
  'trashbin_retention_obligation' => 'auto, 30',
);

Не редактируйте несвязанные значения и будьте осторожны, чтобы не раскрывать содержимое config.phpв заявках или на скриншотах, поскольку оно может содержать конфиденциальную конфигурацию сервера.

Также вы можете проверить действующую конфигурацию с помощью инструментов командной строки Nextcloud, вместо того чтобы копировать содержимое файла в сообщение об устранении неполадок.

Шаг 3: Используйте системный cron для надежной работы фоновых задач.

Политика хранения данных помогает только в том случае, если фоновые задачи Nextcloud действительно выполняются. В документации Nextcloud по фоновым задачам рекомендуется использовать cron операционной системы для производственных экземпляров. AJAX является режимом по умолчанию, но он зависит от посещений страниц и является наименее надежным вариантом.

В типичной установке Linux с использованием www-dataучетной записи веб-сервера отредактируйте файл crontab этой учетной записи:

crontab -u www-data -e

Затем запускайте Nextcloud cron.phpкаждые пять минут:

*/5 * * * * php -f /var/www/nextcloud/cron.php

Замените /var/www/nextcloudна реальный путь к вашей установке. В некоторых системах требуется полный путь к CLI PHP, например /usr/bin/php.

Вы также можете явно выбрать режим cron с помощью:

sudo -E -u www-data php /var/www/nextcloud/occ background:cron

В документации Nextcloud указано, что фоновая задача по удалению содержимого корзины выполняется каждые 30 минут. Вызов cron.phpкаждые пять минут не означает, что корзина очищается каждые пять минут; это означает, что планировщик получает частые возможности для запуска задач, срок выполнения которых истекает.

Шаг 4: Убедитесь, что планировщик работает.

После настройки cron сначала проверьте запись, относящуюся к операционной системе:

crontab -u www-data -l

Затем проверьте настройки администрирования Nextcloud, чтобы узнать статус фоновых заданий. На странице должно отображаться, что задания выполнялись недавно. Если отображаемое время последнего запуска постоянно увеличивается, исправьте cron, прежде чем диагностировать политику хранения.

В Nextcloud 35 в документацию occтакже включены команды проверки фоновых заданий, такие как background-job:list, background-job:running, и background-job:history. Они могут помочь, когда необходимо убедиться, что задания обрабатываются, а не просто предполагать, что cron активен.

Шаг 5: Используйте trashbin:expire для ручного запуска на основе политик.

Если вы настроили собственный период хранения, вы можете применить эту политику вручную с помощью:

sudo -E -u www-data php /var/www/nextcloud/occ trashbin:expire

В справочнике команд Nextcloud для файлов и корзины отмечается важное ограничение: trashbin:expireручное удаление данных выполняется только при заданном пользовательском периоде хранения. При использовании autoполитики по умолчанию команда завершается с информационным сообщением и ничего не делает, поскольку автоматическое удаление данных обрабатывается фоновым заданием.

Если вы намеренно хотите создать отдельную запись cron для этой функции trashbin:expire, Nextcloud описывает способ предварительного отключения встроенной фоновой задачи приложения по удалению ненужных файлов:

sudo -E -u www-data php /var/www/nextcloud/occ config:app:set --value=no files_trashbin background_job_expire_trash

Затем вы можете составить собственное расписание . Это расширенная опция. Для большинства установок проще и удобнее occ trashbin:expire --quietоставить включенным встроенное задание на истечение срока действия и использовать обычный планировщик Nextcloud .cron.php

Не путайте trashbin:expire с trashbin:cleanup.

Названия похожи, но команды имеют совершенно разные эффекты. trashbin:expireУдаляет элементы, соответствующие настроенной политике хранения. trashbin:cleanupБезвозвратно удаляет содержимое корзины для указанных вами пользователей.

Например:

sudo -E -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users

Это деструктивная очистка всех пользователей. Она полезна, когда вам нужно намеренно очистить корзину каждого пользователя, но обычно это неподходящая команда для рутинной автоматизации на основе хранения данных, поскольку она игнорирует созданное вами окно восстановления. Не добавляйте команду очистки всех пользователей в cron, если постоянная, безусловная очистка действительно не является вашей политикой.

Шаг 6: Проверьте и отрегулируйте размер корзины в Nextcloud 35

В текущей документации по командам Nextcloud 35 есть параметр trashbin:size, позволяющий администраторам проверять или устанавливать целевой размер корзины глобально или для каждого пользователя. Чтобы просмотреть текущее глобальное значение:

sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size

Чтобы просмотреть эффективную цель конкретного пользователя:

sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size --user USER_ID

Настраиваемый целевой размер может дополнять хранение данных по возрасту, когда основной проблемой является объем хранилища. Nextcloud отмечает, что изменение глобального размера по умолчанию немедленно запускает очистку существующих корзин, поэтому рассматривайте изменение размера как оперативное действие, а не просто как безобидную настройку отображения.

Как определить, работает ли автоматическая очистка

  • В статусе фоновых заданий отображаются последние запуски.
  • В файле crontab операционной системы содержится ожидаемая cron.phpзапись.
  • Ваши настройки trashbin_retention_obligationсоответствуют задуманной вами политике.
  • Старые мусорные предметы со временем исчезают в соответствии с установленным максимальным сроком хранения, если таковой имеется.
  • trashbin:expireПри настройке пользовательской политики система ведет себя так, как описано в документации.
  • Рост использования диска или квоты неожиданно прекращается, поскольку устаревшие удаленные файлы больше не сохраняются неограниченно долго.

Если старые файлы остаются дольше, чем ожидалось, сначала убедитесь, что ваша политика действительно содержит максимальное значение. autoНастройка по умолчанию не гарантирует удаление ровно через 30 дней. Затем проверьте фоновые задания. Только после этих проверок следует изучать разрешения, серверные системы хранения или журналы приложений.

Практическая конфигурация для большинства серверов, размещенных на собственном сервере.

Для типичного экземпляра с самостоятельным размещением разумной отправной точкой является использование системного cron каждые пять минут и определение явного максимального срока хранения удаленных файлов. Например, 'auto, 30'это позволит пользователям хранить файлы примерно месяц в обычных условиях, гарантируя при этом, что файлы не будут оставаться в папке бесконечно. Если пользователям всегда необходимо иметь полный период восстановления независимо от нехватки места на диске, используйте политику ограничения минимального и максимального времени хранения, например, такую '30, 30':

Храните резервные копии отдельно от корзины. Корзина — это функция восстановления пользователя с квотами и правилами хранения; она не заменяет независимую стратегию резервного копирования.

Официальные ссылки Nextcloud

Оставить комментарий

Устранение проблемы высокой загрузки ЦП в Jitsi Meet в браузерах клиентов.

Устранение проблемы высокой загрузки ЦП в Jitsi Meet в браузерах клиентов.

Диагностика скачков загрузки ЦП в браузере Jitsi Meet и снижение нагрузки на клиентское приложение путем проверки видеофайлов, эффектов камеры, графики браузера и настроек хоста.

Как отслеживать метрики Jitsi Videobridge с помощью Prometheus и Grafana

Как отслеживать метрики Jitsi Videobridge с помощью Prometheus и Grafana

Отслеживайте состояние Jitsi Videobridge, загрузку конференций и трафик с помощью встроенной точки доступа Prometheus, а затем анализируйте и отображайте данные в виде графиков в Grafana.

Как настроить пользовательское доменное имя для Jitsi Meet Docker

Как настроить пользовательское доменное имя для Jitsi Meet Docker

Настройте собственный домен для Jitsi Meet Docker с указанием DNS, PUBLIC_URL, HTTPS, Let's Encrypt, портов брандмауэра, настроек NAT и сквозной проверки.

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 errors after SSL renewal by checking the correct URL and port, proxy routing, service status, deployed certificates, and logs.

Исправлено предупреждение Nextcloud «Неправильно настроен PHP OPcache».

Исправлено предупреждение Nextcloud «Неправильно настроен PHP OPcache».

Узнайте, как диагностировать и устранять предупреждение Nextcloud о конфигурации PHP OPcache, проверив активные параметры PHP SAPI, ограничения размера, комментарии и настройки повторной проверки.

Исправление ошибок миграции базы данных Kopano после обновления версии MySQL.

Исправление ошибок миграции базы данных Kopano после обновления версии MySQL.

Для устранения неполадок, возникающих при миграции базы данных Kopano после обновления MySQL или MariaDB, проверьте резервные копии, версии серверов, режимы SQL, кодировку, состояние схемы и журналы.

Как настроить аутентификацию LDAP и Active Directory в Nextcloud

Как настроить аутентификацию LDAP и Active Directory в Nextcloud

Подключите Nextcloud к LDAP или Active Directory с помощью защищенного канала связи, фильтров пользователей и групп, атрибутов входа в систему и проверенной процедуры развертывания.

Как исправить уведомления Element Android без сервисов Google: руководство по UnifiedPush

Как исправить уведомления Element Android без сервисов Google: руководство по UnifiedPush

Исправление проблем с уведомлениями Element Android на телефонах без привязки к Google путем настройки UnifiedPush, разрешений Android, параметров батареи и надежных тестов проверки.

Исправлено предупреждение Nextcloud «В базе данных отсутствуют некоторые индексы».

Исправлено предупреждение Nextcloud «В базе данных отсутствуют некоторые индексы».

Удалите предупреждение Nextcloud об отсутствии индексов в базе данных с помощью официальной команды occ. Сначала сделайте резервную копию, просмотрите изменения, выполните восстановление и проверьте результат.

Как настроить единый вход (SSO) с помощью Keycloak в Element Web

Как настроить единый вход (SSO) с помощью Keycloak в Element Web

Настройте единый вход Keycloak для Element Web, подключив OIDC к Synapse, задав точный URL-адрес обратного вызова, сопоставив данные пользователя и протестировав выход из системы.