Nextcloud already includes the pieces needed to clean up deleted files automatically, so most administrators do not need a custom shell script. As of the current Nextcloud 35 administration documentation, the recommended approach is still to combine a defined trash-bin retention policy with reliable background-job execution. The important detail is that the default auto policy is not the same as “delete everything after exactly 30 days.” It keeps deleted items for at least 30 days, then makes them eligible for cleanup when space is needed.
If your goal is predictable cleanup, set an explicit maximum retention age and make sure Nextcloud background jobs run through system cron. The steps below use only behavior documented by Nextcloud and also explain when the occ trashbin:expire and trashbin:cleanup commands are appropriate.
What automatic trash-bin cleanup actually does
When the Deleted files app (files_trashbin) is enabled, files removed by users are moved to their trash bins instead of being deleted immediately. That gives users a recovery window, but those deleted items still consume storage. Nextcloud controls their lifetime with the trashbin_retention_obligation setting in config/config.php.
The current Nextcloud trash-bin configuration documentation defines these policy forms:
| Setting | Meaning | Good fit |
auto | Keep items for at least 30 days; after that, remove eligible items when space is needed. | Small installations that are comfortable with the default behavior. |
D, auto | Keep items for at least D days, then allow space-driven cleanup. | You need a minimum recovery window but no firm deletion deadline. |
auto, D | Guarantee deletion after D days, while still allowing earlier space-driven cleanup. | You want a maximum retention age but can tolerate earlier deletion when storage pressure occurs. |
D1, D2 | Keep items for at least D1 days and delete them when they exceed D2 days. | You need both a minimum recovery period and a firm maximum retention age. |
disabled | Disable automatic trash-bin expiration. | Only when indefinite retention is intentional and storage growth is managed another way. |
There is one more storage rule to keep in mind: if a user's quota is exceeded because of deleted files, Nextcloud may ignore the retention setting and clean up trash until quota requirements are met. That is why retention should not be treated as an immutable backup guarantee.
Step 1: Choose a retention policy before changing anything
Decide what the trash bin is for in your environment. If users commonly restore accidentally deleted files, give them a meaningful minimum window. If your priority is bounded storage or a documented data-retention policy, define a maximum as well.
Par exemple, ce paramètre autorise le nettoyage de l'espace à tout moment, mais garantit la suppression des fichiers datant de plus de 30 jours :
'trashbin_retention_obligation' => 'auto, 30',
Si vous souhaitez que les fichiers supprimés soient conservés pendant au moins 30 jours et également supprimés après 30 jours, utilisez plutôt une stratégie limitée :
'trashbin_retention_obligation' => '30, 30',
Choisissez des valeurs adaptées à vos besoins de récupération. Une période plus courte permet de libérer de l'espace de stockage plus rapidement, mais réduit le temps de restauration des fichiers. Une période plus longue offre un temps de récupération plus important, mais peut augmenter l'utilisation du disque.
Étape 2 : Définir trashbin_retention_obligation dans config.php
Ouvrez le fichier de configuration de Nextcloud, généralement situé config/config.phpdans le répertoire d'installation. Ajoutez ou modifiez le paramètre dans le $CONFIGtableau. Voici un exemple typique :
<?php
$CONFIG = array (
// Other Nextcloud settings...
'trashbin_retention_obligation' => 'auto, 30',
);
Ne modifiez pas les valeurs non pertinentes et veillez à ne pas divulguer le contenu des config.phptickets ou des captures d'écran, car il peut contenir des informations sensibles concernant la configuration du serveur.
Vous pouvez également examiner la configuration effective via les outils en ligne de commande de Nextcloud plutôt que de copier le contenu du fichier dans un message de dépannage.
Étape 3 : Utiliser cron système pour des tâches d’arrière-plan fiables
La politique de rétention n'est utile que si les tâches en arrière-plan de Nextcloud sont effectivement exécutées. La documentation de Nextcloud relative aux tâches en arrière-plan recommande l'utilisation de cron (gestionnaire de tâches système) pour les instances de production. AJAX est le mode par défaut, mais il dépend du nombre de visites et constitue l'option la moins fiable.
Sur une installation Linux classique utilisant le www-datacompte serveur web, modifiez le crontab de ce compte :
crontab -u www-data -e
Ensuite, exécutez Nextcloud cron.phptoutes les cinq minutes :
*/5 * * * * php -f /var/www/nextcloud/cron.php
Remplacez /var/www/nextcloudpar le chemin d'accès réel à votre installation. Certains systèmes nécessitent le chemin d'accès complet à l'interface de ligne de commande PHP, par exemple/usr/bin/php : .
Vous pouvez également sélectionner explicitement le mode cron avec :
sudo -E -u www-data php /var/www/nextcloud/occ background:cron
Nextcloud indique que la tâche d'arrière-plan de vidage de la corbeille s'exécute toutes les 30 minutes. Un appel cron.phptoutes les cinq minutes ne signifie pas que la corbeille est vidée toutes les cinq minutes ; cela signifie que le planificateur a régulièrement l'occasion d'exécuter les tâches qui arrivent à échéance.
Étape 4 : Vérifier que le planificateur fonctionne
Après avoir configuré cron, vérifiez d'abord l'entrée du système d'exploitation :
crontab -u www-data -l
Vérifiez ensuite l'état des tâches en arrière-plan dans les paramètres d'administration de Nextcloud. La page devrait indiquer que des tâches ont été exécutées récemment. Si la date de dernière exécution affichée est de plus en plus ancienne, corrigez la configuration cron avant d'analyser la politique de rétention.
Sur Nextcloud 35, la documentation occdes commandes inclut également des commandes d'inspection des tâches en arrière-plan telles que background-job:list`cron`, background-job:running`cron` et background-job:history`cron`. Celles-ci peuvent s'avérer utiles pour vérifier que les tâches sont bien en cours de traitement, plutôt que de simplement supposer que cron est actif.
Étape 5 : Utilisez trashbin:expire pour les exécutions manuelles basées sur des règles
Si vous avez configuré une période de rétention personnalisée, vous pouvez appliquer manuellement cette politique avec :
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:expire
La documentation actuelle de Nextcloud concernant les commandes de fichiers et de corbeille signale une limitation importante : trashbin:expirel’expiration manuelle n’est effectuée que lorsqu’une période de rétention personnalisée est configurée. Avec la autopolitique par défaut, la commande se termine par un message d’information sans rien faire, car l’expiration automatique est gérée par une tâche en arrière-plan.
Si vous souhaitez délibérément une entrée cron système distincte pour trashbin:expire, Nextcloud documente une méthode pour désactiver d'abord la tâche d'arrière-plan intégrée de l'application qui gère l'expiration de la corbeille :
sudo -E -u www-data php /var/www/nextcloud/occ config:app:set --value=no files_trashbin background_job_expire_trash
Vous pouvez ensuite programmer vous-même les tâches. Il s'agit d'une option avancée. Pour la plupart des installations, il est plus simple et plus facile à gérer occ trashbin:expire --quietde laisser la tâche d'expiration intégrée activée et d'utiliser le planificateur standard de Nextcloud .cron.php
Ne confondez pas trashbin:expire avec trashbin:cleanup
Les noms sont similaires, mais les commandes ont des effets très différents. trashbin:expiresupprime les éléments qui répondent aux critères de la politique de rétention configurée. trashbin:cleanupsupprime définitivement le contenu de la corbeille pour les utilisateurs spécifiés.
Par exemple:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users
Il s'agit d'une purge destructive qui s'applique à tous les utilisateurs. Elle est utile lorsque vous devez vider la corbeille de chaque utilisateur, mais elle est généralement inadaptée à l'automatisation régulière basée sur la rétention des fichiers, car elle ignore la fenêtre de récupération que vous avez définie. N'intégrez pas de commande de nettoyage pour tous les utilisateurs dans cron, sauf si une purge permanente et inconditionnelle fait partie intégrante de votre politique.
Étape 6 : Vérifier et contrôler la taille de la corbeille sur Nextcloud 35
La documentation actuelle des commandes de Nextcloud 35 inclut trashbin:sizeune commande permettant aux administrateurs de consulter ou de définir la taille cible de la corbeille, globalement ou par utilisateur. Pour afficher la valeur globale actuelle :
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size
Pour afficher la cible effective d'un utilisateur spécifique :
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size --user USER_ID
Une taille cible configurable peut compléter la conservation basée sur l'âge lorsque la capacité de stockage est la principale préoccupation. Nextcloud indique que la modification de la taille par défaut globale entraîne immédiatement le nettoyage des corbeilles existantes ; il convient donc de considérer les modifications de taille comme une action opérationnelle et non comme un simple paramètre d'affichage.
Comment savoir si le nettoyage automatique fonctionne ?
- L'état des tâches en arrière-plan affiche les exécutions récentes.
- Le fichier crontab du système d'exploitation contient l'
cron.phpentrée attendue.
- Votre configuration
trashbin_retention_obligationcorrespond à la politique que vous aviez prévue.
- Les anciens éléments de la corbeille disparaissent progressivement en fonction de la durée de vie maximale configurée, si elle existe.
trashbin:expirese comporte comme indiqué dans la documentation lorsqu'une stratégie personnalisée est configurée.
- L'utilisation du disque ou du quota cesse d'augmenter de manière inattendue car les fichiers supprimés obsolètes ne sont plus conservés indéfiniment.
Si des fichiers anciens restent en mémoire plus longtemps que prévu, vérifiez d'abord que votre politique de suppression inclut bien une durée maximale. Le autoparamètre par défaut ne garantit pas la suppression au bout de 30 jours. Ensuite, examinez les tâches en arrière-plan. Ce n'est qu'après ces vérifications que vous pourrez analyser les autorisations, les systèmes de stockage ou les journaux d'application.
Une configuration pratique pour la plupart des serveurs auto-hébergés
Pour une instance auto-hébergée classique, il est judicieux de commencer par configurer une tâche cron système toutes les cinq minutes et de définir une durée de conservation maximale explicite pour la corbeille. Par exemple, 'auto, 30'cela permet aux utilisateurs de conserver les fichiers pendant environ un mois dans des conditions normales, tout en évitant qu'ils ne restent indéfiniment. Si les utilisateurs doivent impérativement bénéficier de la totalité de la fenêtre de récupération, quelle que soit la pression sur l'espace de stockage, il est préférable d'utiliser une politique de durée de conservation minimale et maximale '30, 30'.
Conservez vos sauvegardes séparément de la corbeille. La corbeille est une fonctionnalité de récupération utilisateur avec des quotas et une durée de conservation ; elle ne remplace pas une stratégie de sauvegarde indépendante.
Références officielles de Nextcloud