Nextcloud ya incluye las herramientas necesarias para limpiar automáticamente los archivos borrados, por lo que la mayoría de los administradores no necesitan un script personalizado. Según la documentación de administración actual de Nextcloud 35, el enfoque recomendado sigue siendo combinar una política de retención de la papelera definida con la ejecución confiable de tareas en segundo plano. Es importante destacar que la autopolítica predeterminada no es lo mismo que "eliminar todo después de exactamente 30 días". Conserva los elementos borrados durante al menos 30 días y luego los libera cuando se necesita espacio.
Si su objetivo es una limpieza predecible, establezca una edad máxima de retención explícita y asegúrese de que las tareas en segundo plano de Nextcloud se ejecuten mediante cron del sistema. Los pasos que se describen a continuación utilizan únicamente el comportamiento documentado por Nextcloud y también explican cuándo son apropiados los comandos occ trashbin:expirey trashbin:cleanup.
¿Qué hace realmente la limpieza automática de los contenedores de basura?
Cuando la aplicación Archivos eliminados ( files_trashbin) está habilitada, los archivos eliminados por los usuarios se mueven a sus papeleras en lugar de eliminarse inmediatamente. Esto les da a los usuarios un período de recuperación, pero esos elementos eliminados siguen consumiendo espacio de almacenamiento. Nextcloud controla su tiempo de vida con la trashbin_retention_obligationconfiguración en config/config.php.
La documentación actual de configuración de la papelera de reciclaje de Nextcloud define estas formas de política:
| Configuración | Significado | Buen ajuste |
auto | Conserve los artículos durante al menos 30 días; después de ese plazo, retire los artículos que cumplan los requisitos cuando necesite espacio. | Instalaciones pequeñas que se sienten cómodas con el comportamiento predeterminado. |
D, auto | Conserva los artículos durante al menos D días y luego realiza una limpieza según el espacio disponible. | Necesitas un plazo mínimo de recuperación, pero no una fecha límite de eliminación estricta. |
auto, D | Garantizar la eliminación después de D días, al tiempo que permite una limpieza más temprana basada en el espacio disponible. | Desea establecer un período de retención máximo, pero puede tolerar una eliminación anticipada cuando se produzcan problemas de almacenamiento. |
D1, D2 | Conserva los artículos durante al menos D1 días y elimínalos cuando superen los D2 días. | Necesitas tanto un período mínimo de recuperación como una edad máxima de retención definida. |
disabled | Desactivar la caducidad automática de la papelera de reciclaje. | Solo cuando la retención indefinida es intencional y el crecimiento del almacenamiento se gestiona de otra manera. |
Hay otra regla de almacenamiento que conviene tener en cuenta: si se supera la cuota de un usuario debido a la eliminación de archivos, Nextcloud puede ignorar la configuración de retención y limpiar la papelera hasta que se cumplan los requisitos de cuota. Por eso, la retención no debe considerarse una garantía de copia de seguridad inmutable.
Paso 1: Elija una política de retención antes de cambiar nada.
Decide para qué sirve la papelera de reciclaje en tu entorno. Si los usuarios suelen restaurar archivos borrados accidentalmente, establece un plazo mínimo adecuado. Si tu prioridad es el almacenamiento limitado o una política de retención de datos documentada, define también un plazo máximo.
Por ejemplo, esta configuración permite la limpieza basada en el espacio en cualquier momento, pero garantiza que se eliminen los archivos con más de 30 días de antigüedad:
'trashbin_retention_obligation' => 'auto, 30',
Si desea que los archivos borrados se conserven durante al menos 30 días y que también se eliminen después de 30 días, utilice una política de límites predefinidos:
'trashbin_retention_obligation' => '30, 30',
Seleccione los valores que se ajusten a sus necesidades de recuperación. Un período más corto ahorra espacio de almacenamiento más rápidamente, pero reduce el tiempo que los usuarios tienen para restaurar los archivos. Un período más largo ofrece más tiempo de recuperación, pero puede aumentar el uso del disco.
Paso 2: Configure trashbin_retention_obligation en config.php
Abra el archivo de configuración de Nextcloud, que normalmente se encuentra en config/config.phpel directorio de instalación. Añada o modifique la configuración dentro del $CONFIGarray. Un ejemplo típico es:
<?php
$CONFIG = array (
// Other Nextcloud settings...
'trashbin_retention_obligation' => 'auto, 30',
);
No edite valores no relacionados y tenga cuidado de no exponer el contenido config.phpen tickets o capturas de pantalla, ya que puede contener configuraciones confidenciales del servidor.
También puede inspeccionar la configuración efectiva mediante las herramientas de línea de comandos de Nextcloud, en lugar de copiar el contenido del archivo en un mensaje de solución de problemas.
Paso 3: Utilice el cron del sistema para tareas en segundo plano fiables.
La política de retención solo es útil si Nextcloud está ejecutando tareas en segundo plano. La documentación de Nextcloud sobre tareas en segundo plano recomienda usar cron del sistema operativo para instancias de producción. AJAX es el modo predeterminado, pero depende de las visitas a la página y es la opción menos fiable.
En una instalación típica de Linux que utiliza la www-datacuenta del servidor web, edite el crontab de esa cuenta:
crontab -u www-data -e
Luego, ejecuta Nextcloud cron.phpcada cinco minutos:
*/5 * * * * php -f /var/www/nextcloud/cron.php
Reemplazar /var/www/nextcloudcon la ruta real a su instalación. Algunos sistemas requieren la ruta completa de PHP CLI, como por ejemplo /usr/bin/php.
También puede seleccionar el modo cron explícitamente con:
sudo -E -u www-data php /var/www/nextcloud/occ background:cron
Nextcloud documenta que la tarea en segundo plano para la expiración de la papelera se ejecuta cada 30 minutos. Que se ejecute cron.phpcada cinco minutos no significa que la papelera se vacíe cada cinco minutos; significa que el planificador tiene oportunidades frecuentes para ejecutar las tareas pendientes.
Paso 4: Verifique que el planificador esté funcionando.
Después de configurar cron, verifique primero la entrada del sistema operativo:
crontab -u www-data -l
A continuación, compruebe la configuración de administración de Nextcloud para ver el estado de las tareas en segundo plano. La página debería indicar que se han ejecutado tareas recientemente. Si la hora de la última ejecución que se muestra sigue siendo mayor, corrija cron antes de diagnosticar la política de retención.
En Nextcloud 35, los occcomandos documentados también incluyen comandos de inspección de trabajos en segundo plano como background-job:list, background-job:running, y background-job:history. Estos pueden ser útiles cuando necesite verificar que los trabajos se estén procesando en lugar de simplemente asumir que cron está activo.
Paso 5: Utilice trashbin:expire para ejecuciones manuales basadas en políticas.
Si configuró un período de retención personalizado, puede aplicar manualmente esa política con:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:expire
La documentación actual de Nextcloud sobre los comandos para la papelera de reciclaje señala una limitación importante: trashbin:expiresolo realiza la expiración manual cuando se configura un período de retención personalizado. Con la autopolítica predeterminada, el comando finaliza con un mensaje informativo y no realiza ninguna acción, ya que la expiración automática la gestiona un proceso en segundo plano.
Si desea deliberadamente una entrada cron del sistema separada para trashbin:expire, Nextcloud documenta una forma de deshabilitar primero el trabajo en segundo plano de expiración de la papelera integrado de la aplicación:
sudo -E -u www-data php /var/www/nextcloud/occ config:app:set --value=no files_trashbin background_job_expire_trash
Luego puedes programar occ trashbin:expire --quietla tarea. Esta es una opción avanzada. Para la mayoría de las instalaciones, dejar habilitada la tarea de expiración integrada y usar cron.phpel programador normal de Nextcloud es más sencillo y fácil de mantener.
No confunda trashbin:expire con trashbin:cleanup.
Los nombres son similares, pero los comandos tienen efectos muy diferentes. trashbin:expireElimina los elementos que cumplen con la política de retención configurada. trashbin:cleanupElimina permanentemente el contenido de la papelera para los usuarios que especifique.
Por ejemplo:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users
Es una limpieza destructiva que afecta a todos los usuarios. Resulta útil cuando se necesita vaciar intencionadamente la papelera de todos los usuarios, pero suele ser un comando inadecuado para la automatización rutinaria basada en la retención, ya que ignora el período de recuperación que se haya configurado. No incluya un comando de limpieza para todos los usuarios en cron a menos que la limpieza permanente e incondicional sea realmente su política.
Paso 6: Compruebe y controle el tamaño de la papelera de reciclaje en Nextcloud 35.
La documentación actual del comando Nextcloud 35 incluye trashbin:size, que permite a los administradores inspeccionar o establecer el tamaño objetivo de la papelera de reciclaje de forma global o por usuario. Para ver el valor global actual:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size
Para ver el objetivo efectivo de un usuario específico:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size --user USER_ID
Un tamaño objetivo configurable puede complementar la retención basada en la antigüedad cuando la capacidad de almacenamiento es la principal preocupación. Nextcloud señala que cambiar el tamaño predeterminado global activa inmediatamente la limpieza de las papeleras existentes, por lo que conviene tratar los cambios de tamaño como una acción operativa, no solo como una configuración visual inofensiva.
Cómo saber si la limpieza automática está funcionando.
- El estado de los trabajos en segundo plano muestra las ejecuciones recientes.
- El crontab del sistema operativo contiene la
cron.phpentrada esperada.
- Su configuración
trashbin_retention_obligationcoincide con la política que pretendía.
- Los elementos de basura antiguos acaban desapareciendo según la antigüedad máxima configurada, si es que existe alguna.
trashbin:expireSe comporta según lo documentado cuando se configura una política personalizada.
- El uso del disco o de la cuota deja de aumentar inesperadamente porque los archivos eliminados obsoletos ya no se conservan indefinidamente.
Si los archivos antiguos permanecen más tiempo del esperado, primero confirme que su política incluye un valor máximo. La autoconfiguración predeterminada no garantiza la eliminación exacta al día 30. A continuación, verifique las tareas en segundo plano. Solo después de estas comprobaciones debería investigar los permisos, los sistemas de almacenamiento o los registros de la aplicación.
Una configuración práctica para la mayoría de los servidores autogestionados.
Para una instancia autoalojada típica, un punto de partida sensato es usar cron del sistema cada cinco minutos y definir un tiempo máximo de eliminación explícito. Por ejemplo, 'auto, 30'esto les da a los usuarios hasta aproximadamente un mes en condiciones normales, asegurando que los elementos no permanezcan indefinidamente. Si los usuarios siempre deben tener la ventana de recuperación completa, independientemente de la presión de almacenamiento, use una política de mínimo y máximo acotada como '30, 30'esta.
Mantén las copias de seguridad separadas de la papelera. La papelera es una función de recuperación de usuario con cuotas y restricciones de retención; no sustituye a una estrategia de copia de seguridad independiente.
Referencias oficiales de Nextcloud