Nextcloud include già gli elementi necessari per eliminare automaticamente i file cancellati, quindi la maggior parte degli amministratori non ha bisogno di uno script di shell personalizzato. Secondo la documentazione di amministrazione di Nextcloud 35, l'approccio consigliato è ancora quello di combinare una policy di conservazione del cestino definita con l'esecuzione affidabile di processi in background. Il dettaglio importante è che la autopolicy predefinita non equivale a "eliminare tutto dopo esattamente 30 giorni". Conserva gli elementi eliminati per almeno 30 giorni, quindi li rende idonei per l'eliminazione quando è necessario spazio.
Se il tuo obiettivo è una pulizia prevedibile, imposta un'età massima di conservazione esplicita e assicurati che i processi in background di Nextcloud vengano eseguiti tramite cron di sistema. I passaggi seguenti utilizzano solo il comportamento documentato da Nextcloud e spiegano anche quando i comandi occ trashbin:expiree trashbin:cleanupsono appropriati.
Cosa fa effettivamente la pulizia automatica del cestino dei rifiuti
Quando l'app File eliminati ( files_trashbin) è abilitata, i file rimossi dagli utenti vengono spostati nel cestino anziché essere eliminati immediatamente. Questo offre agli utenti un periodo di tempo per il recupero, ma gli elementi eliminati continuano a occupare spazio di archiviazione. Nextcloud controlla la loro durata con l' trashbin_retention_obligationimpostazione in config/config.php.
La documentazione attuale sulla configurazione del cestino di Nextcloud definisce le seguenti forme di policy:
| Collocamento | Senso | Ottima vestibilità |
auto | Conserva gli articoli per almeno 30 giorni; dopodiché, rimuovi gli articoli idonei quando hai bisogno di spazio. | Installazioni di piccole dimensioni che si trovano a proprio agio con il comportamento predefinito. |
D, auto | Conservare gli oggetti per almeno D giorni, dopodiché procedere alla pulizia in base allo spazio disponibile. | È necessario un periodo minimo di recupero, ma non una scadenza precisa per la cancellazione. |
auto, D | Garantire la cancellazione dopo D giorni, pur consentendo una pulizia anticipata basata sullo spazio. | Si desidera un periodo di conservazione massimo, ma si può tollerare una cancellazione anticipata in caso di necessità di spazio di archiviazione. |
D1, D2 | Conserva gli elementi per almeno D1 giorni ed eliminali quando superano i D2 giorni. | È necessario prevedere sia un periodo minimo di recupero sia un'età massima di mantenimento ben definita. |
disabled | Disattiva la scadenza automatica del cestino. | Solo quando la conservazione a tempo indeterminato è intenzionale e la crescita dello spazio di archiviazione viene gestita in un altro modo. |
C'è un'altra regola di archiviazione da tenere a mente: se la quota di un utente viene superata a causa di file eliminati, Nextcloud potrebbe ignorare l'impostazione di conservazione e svuotare il cestino fino al raggiungimento dei requisiti di quota. Per questo motivo, la conservazione non deve essere considerata una garanzia di backup immutabile.
Passaggio 1: Scegli una politica di conservazione prima di modificare qualsiasi cosa
Definisci la funzione del cestino nel tuo ambiente. Se gli utenti ripristinano frequentemente i file cancellati accidentalmente, stabilisci un intervallo minimo significativo. Se la tua priorità è la disponibilità di spazio di archiviazione limitato o una politica di conservazione dei dati documentata, definisci anche un intervallo massimo.
Ad esempio, questa impostazione consente la pulizia basata sullo spazio in qualsiasi momento, ma garantisce la rimozione dei file più vecchi di 30 giorni:
'trashbin_retention_obligation' => 'auto, 30',
Se desideri che i file eliminati vengano conservati per almeno 30 giorni e rimossi definitivamente dopo tale periodo, utilizza invece una policy limitata:
'trashbin_retention_obligation' => '30, 30',
Scegli i valori che meglio si adattano alle tue esigenze di ripristino. Un periodo più breve consente di liberare spazio di archiviazione più rapidamente, ma riduce il tempo a disposizione degli utenti per ripristinare i file. Un periodo più lungo offre più tempo per il ripristino, ma può aumentare l'utilizzo del disco.
Passaggio 2: Imposta trashbin_retention_obligation in config.php
Apri il file di configurazione di Nextcloud, che di solito si trova config/config.phpnella directory di installazione. Aggiungi o modifica l'impostazione all'interno $CONFIGdell'array. Un esempio tipico è:
<?php
$CONFIG = array (
// Other Nextcloud settings...
'trashbin_retention_obligation' => 'auto, 30',
);
Non modificare valori non correlati e fai attenzione a non esporre il contenuto config.phpnei ticket o negli screenshot, poiché potrebbe contenere configurazioni sensibili del server.
È inoltre possibile verificare la configurazione effettiva tramite gli strumenti da riga di comando di Nextcloud, anziché copiare il contenuto del file in un messaggio di risoluzione dei problemi.
Passaggio 3: Utilizzare cron di sistema per processi in background affidabili
La politica di conservazione è utile solo se i processi in background di Nextcloud sono effettivamente in esecuzione. La documentazione di Nextcloud sui processi in background raccomanda l'utilizzo del cron del sistema operativo per le istanze di produzione. AJAX è la modalità predefinita, ma dipende dalle visite alla pagina ed è l'opzione meno affidabile.
Su una tipica installazione Linux che utilizza l' www-dataaccount del server web, modifica il crontab di tale account:
crontab -u www-data -e
Quindi esegui Nextcloud cron.phpogni cinque minuti:
*/5 * * * * php -f /var/www/nextcloud/cron.php
Sostituisci /var/www/nextcloudcon il percorso reale della tua installazione. Alcuni sistemi richiedono il percorso completo di PHP CLI, come /usr/bin/php.
È inoltre possibile selezionare esplicitamente la modalità cron con:
sudo -E -u www-data php /var/www/nextcloud/occ background:cron
Nextcloud documenta che il processo in background per la scadenza del cestino viene eseguito ogni 30 minuti. Un'esecuzione cron.phpogni cinque minuti non significa che il cestino venga svuotato ogni cinque minuti; significa che lo scheduler ha frequenti opportunità di eseguire i processi in scadenza.
Passaggio 4: Verificare che lo scheduler funzioni
Dopo aver configurato cron, verifica innanzitutto la voce relativa al sistema operativo:
crontab -u www-data -l
Successivamente, controlla le impostazioni di amministrazione di Nextcloud per lo stato dei processi in background. La pagina dovrebbe indicare che i processi sono stati eseguiti di recente. Se l'ora dell'ultima esecuzione riportata continua ad aumentare, correggi cron prima di diagnosticare la policy di conservazione.
Su Nextcloud 35, i comandi documentati occincludono anche comandi di ispezione dei processi in background come background-job:list, background-job:running, e background-job:history. Questi possono essere utili quando è necessario verificare che i processi vengano elaborati anziché presumere semplicemente che cron sia attivo.
Passaggio 5: Utilizzare trashbin:expire per le esecuzioni manuali basate su criteri
Se hai configurato un periodo di conservazione personalizzato, puoi applicare manualmente tale criterio con:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:expire
La documentazione di riferimento attuale sui comandi per file e cestino di Nextcloud evidenzia un'importante limitazione: trashbin:expirela scadenza manuale viene eseguita solo quando è configurato un periodo di conservazione personalizzato. Con la autopolicy predefinita, il comando termina con un messaggio informativo e non fa nulla, poiché la scadenza automatica viene gestita dal processo in background.
Se desideri deliberatamente una voce cron di sistema separata per trashbin:expire, Nextcloud documenta un modo per disabilitare prima il processo in background integrato dell'app per la scadenza del cestino:
sudo -E -u www-data php /var/www/nextcloud/occ config:app:set --value=no files_trashbin background_job_expire_trash
A quel punto potrai programmare l'operazione occ trashbin:expire --quietmanualmente. Si tratta di un'opzione avanzata. Per la maggior parte delle installazioni, lasciare attivo il processo di scadenza integrato e utilizzare cron.phplo scheduler standard di Nextcloud è più semplice e di più facile manutenzione.
Non confondere trashbin:expire con trashbin:cleanup
I nomi sono simili, ma i comandi hanno effetti molto diversi. trashbin:expireRimuove gli elementi che soddisfano i criteri di conservazione configurati. trashbin:cleanupRimuove definitivamente il contenuto del cestino per gli utenti specificati.
Per esempio:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users
Si tratta di una pulizia distruttiva che interessa tutti gli utenti. È utile quando è necessario svuotare intenzionalmente il cestino di ogni utente, ma di solito non è il comando giusto per l'automazione di routine basata sulla conservazione dei dati, perché ignora la finestra di ripristino definita. Non inserire un comando di pulizia per tutti gli utenti in cron a meno che la pulizia permanente e incondizionata non sia effettivamente la tua politica.
Passaggio 6: Verifica e controlla le dimensioni del cestino su Nextcloud 35
La documentazione attuale dei comandi di Nextcloud 35 include trashbin:size, che consente agli amministratori di ispezionare o impostare la dimensione target del cestino a livello globale o per utente. Per visualizzare il valore globale corrente:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size
Per visualizzare il target effettivo di uno specifico utente:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size --user USER_ID
Un target di dimensione configurato può integrare la conservazione basata sull'età quando la capacità di archiviazione è la principale preoccupazione. Nextcloud fa notare che la modifica della dimensione predefinita globale attiva immediatamente la pulizia dei cestini esistenti, quindi è importante considerare le modifiche alle dimensioni come un'azione operativa e non come una semplice impostazione di visualizzazione.
Come capire se la pulizia automatica funziona
- Lo stato dei processi in background mostra le esecuzioni recenti.
- Il crontab del sistema operativo contiene la
cron.phpvoce prevista.
- La configurazione
trashbin_retention_obligationcorrisponde ai criteri che avevi previsto.
- Gli oggetti vecchi vengono eliminati automaticamente in base al limite di età massimo configurato, se presente.
trashbin:expireSi comporta come documentato quando viene configurata una policy personalizzata.
- L'utilizzo del disco o della quota smette di aumentare inaspettatamente perché i file eliminati obsoleti non vengono più conservati a tempo indeterminato.
Se i file meno recenti rimangono memorizzati più a lungo del previsto, verificate innanzitutto che la vostra policy preveda effettivamente un valore massimo. L' autoimpostazione predefinita non garantisce la cancellazione precisa dopo 30 giorni. Successivamente, controllate i processi in background. Solo dopo questi controlli dovreste esaminare le autorizzazioni, i sistemi di archiviazione o i log delle applicazioni.
Una configurazione pratica per la maggior parte dei server self-hosted
Per un'istanza self-hosted tipica, un buon punto di partenza è utilizzare il cron di sistema ogni cinque minuti e definire un'età massima esplicita per il cestino. Ad esempio, 'auto, 30'offre agli utenti fino a circa un mese in condizioni normali, garantendo al contempo che gli elementi non rimangano nel cestino indefinitamente. Se gli utenti devono sempre avere la finestra di ripristino completa indipendentemente dalla pressione sullo spazio di archiviazione, utilizzare invece una policy con limiti minimi e massimi, come '30, 30'ad esempio
Mantieni i backup separati dal Cestino. Il Cestino è una funzionalità di ripristino utente con quote e modalità di conservazione; non sostituisce una strategia di backup indipendente.
Riferimenti ufficiali di Nextcloud