Abbiamo già spiegato come trovare ed eliminare manualmente i file più vecchi di X giorni utilizzando il comando "trova" in Linux . Oggi faremo lo stesso, ma solo se i file non sono stati consultati per un certo periodo di tempo. Saluta "Tmpwatch" , un'utilità della riga di comando per eliminare ricorsivamente i file a cui non è stato effettuato l'accesso per un determinato periodo di tempo. Non solo i file, tmpwatch cancellerà anche le directory vuote.
Per impostazione predefinita, Tmpwatch deciderà quali file/directory devono essere eliminati in base al loro atime
(tempo di accesso). Ovviamente puoi modificare questo comportamento utilizzando ctime
(tempo di cambio inode), mtime
anche i valori (tempo di modifica). Normalmente, Tmpwatch può essere utilizzato per eliminare i contenuti di /tmp
directory e altri elementi inutilizzati e indesiderati come vecchi file di registro.
Un avvertimento importante!!
Prima di iniziare a utilizzare questo strumento, devi sapere che Tmpwatch eliminerà file e directory in modo ricorsivo in base ai criteri indicati. Non eseguire tmpwatch in / (directory principale) . Questa directory contiene file importanti necessari per mantenere in esecuzione il sistema Linux. Se non stai abbastanza attento, tmpwatch cancellerà i file e le directory di sistema importanti che corrispondono ai criteri indicati nell'intera directory principale. Non esiste un meccanismo di salvaguardia integrato nello strumento Tmpwatch per impedirti di eseguirlo nella directory principale. Quindi, non c'è modo di annullare l'operazione. Sei stato avvisato!
Installa Tmpwatch su Linux
Tmpwatch è disponibile nei repository predefiniti della maggior parte delle distribuzioni Linux.
Su Fedora, CentOS, RHEL, AlmaLinux e Rocky Linux, puoi installarlo usando il comando:
$ sudo dnf install tmpwatch
Su openSUSE:
$ sudo zypper install tmpwatch
Su Debian e sui suoi derivati come Ubuntu, Tmpwatch è disponibile con nomi diversi, ad esempio Tmpreaper . Tmpreaper si basa principalmente su `tmpwatch-1.2/1.4' di Erik Troan da Redhat. Ora, tmpreaper è mantenuto per Debian da Paul Slootman .
Per installare tmpreaper su Debian, Ubuntu, Linux Mint, esegui:
$ sudo apt install tmpreaper
Per avviarlo, esegui:
$ tmpreaper <options>
Oppure inserisci il percorso completo:
$ /usr/sbin/tmpreaper <options>
Elimina i file a cui non è stato possibile accedere per un dato momento utilizzando Tmpwatch / Tmpreaper
L'utilizzo di Tmpwatch e Tmpreaper è quasi lo stesso. Se utilizzi sistemi basati su Debian, sostituisci "Tmpwatch" con "Tmpreaper" nei seguenti esempi.
Elimina i file a cui non si accede per più di X giorni
Per eliminare i file più vecchi di 10 giorni, esegui:
tmpwatch 10d /var/log/
Il comando sopra eliminerà tutti i file e le directory vuote a cui non si accede per più di 10 giorni da /var/log/
cartella.
Elimina i file che non vengono modificati per più di X giorni
Come ho già detto, Tmpwatch eliminerà i file in base al loro tempo di accesso. Puoi anche eliminare i file in base all'ora di modifica (mtime) utilizzando -m
opzione.
Ad esempio, il comando seguente cancellerà i file che non sono stati modificati per i 10 giorni in /var/log/
cartella.
tmpwatch -m 10d /var/log/
Qui, -m
fa riferimento all'ora di modifica e a d
è la
d
- per giorni,h
- per ore,m
- per minuti,s
- per secondi.
Orari è l'impostazione predefinita.
Ad esempio, per eliminare i file che non sono stati modificati nelle ultime 10 ore , esegui semplicemente:
tmpwatch -m 10 /var/log/
Come avrai notato, non ho usato il parametro time_spec nel comando precedente. Perché, h (per le ore) è il parametro predefinito, quindi non dobbiamo menzionarlo quando eliminiamo file che non sono stati modificati nelle ultime X ore.
Elimina collegamenti simbolici
Se vuoi eliminare i collegamenti simbolici, non solo i normali file e directory, usa -s
opzione come di seguito.
tmpwatch -s 10 /var/log/
Elimina tutti i file
Per rimuovere tutti i tipi di file, non solo i file normali, i collegamenti simbolici e le directory, usa -a
opzione.
tmpwatch -a 10 /var/log/
Il comando precedente eliminerà tutti i tipi di file inclusi file normali, collegamenti simbolici e directory nel /var/log/
cartella.
Escludi directory dall'eliminazione
A volte, potresti voler eliminare i file, ma non le directory. in tal caso, il comando sarebbe:
tmpwatch -am 10 --nodirs /var/log/
Il comando precedente cancellerà tutti i file tranne le directory che non sono state modificate nelle ultime 10 ore.
Esegui un test senza eliminare nulla
A volte, potresti voler visualizzare quali file verranno effettivamente eliminati. Questo sarà utile quando si esegue Tmpwatch su una directory importante. In tal caso, esegui Tmpwatch in modalità test con -t
opzione.
tmpwatch -t 30 /var/log/
Esempio di output dal server CentOS 7:
removing file /var/log/wtmp removing directory /var/log/ppp if empty removing directory /var/log/tuned if empty removing directory /var/log/anaconda if empty removing file /var/log/dmesg.old removing file /var/log/boot.log removing file /var/log/dnf.librepo.log
Sui sistemi basati su Debian, vedrai un output come di seguito.
$ tmpreaper -t 30 /var/log/ (PID 1803) Pretending to clean up directory `/var/log/'. (PID 1804) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 1804) Back from recursing down `apache2'. (PID 1804) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 1804) Back from recursing down `dbconfig-common'. (PID 1804) Pretending to clean up directory `dist-upgrade'. (PID 1804) Back from recursing down `dist-upgrade'. (PID 1804) Pretending to clean up directory `lxd'. (PID 1804) Back from recursing down `lxd'. Pretending to remove file `/var/log//cloud-init.log'. (PID 1804) Pretending to clean up directory `landscape'. Pretending to remove file `landscape/sysinfo.log'. (PID 1804) Back from recursing down `landscape'. [...]
Questo simulerà solo l'operazione, ma in realtà non eliminerà nulla. Tmpwatch eseguirà semplicemente un ciclo di prova e ti mostrerà quali file verranno eliminati nell'output.
Forza eliminazione file
Se vuoi eliminare forzatamente i file, usa -f
opzione.
tmpwatch -f 10h /var/log/
Normalmente, i file di proprietà dell'utente corrente, senza accesso in scrittura, non vengono rimossi. Il -f
l'opzione cancellerà anche loro.
Salta alcuni file dall'eliminazione
Tmpreaper ha un'opzione per saltare i file dall'eliminazione. Ciò sarà utile quando desideri conservare determinati tipi di file ed eliminare tutto il resto. In tal caso, usa --protect
opzione.
tmpreaper --protect '*.txt' -t 10h /var/log/
Questo comando salterà tutti i file che hanno .txt
estensione dalla cancellazione
Risultato di esempio:
(PID 2623) Pretending to clean up directory `/var/log/'. (PID 2624) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 2624) Back from recursing down `apache2'. (PID 2624) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 2624) Back from recursing down `dbconfig-common'. (PID 2624) Pretending to clean up directory `dist-upgrade'. (PID 2624) Back from recursing down `dist-upgrade'. Pretending to remove empty directory `dist-upgrade'. Entry matching `--protect' pattern skipped. `ostechnix.txt' (PID 2624) Pretending to clean up directory `lxd'.
Come puoi vedere, Tmpreaper salta il *.txt
file dalla cancellazione.
Questa opzione non è disponibile in Tmpwatch, a proposito.
Impostazione di cron job per eliminare periodicamente i file
Potresti non voler eseguire manualmente Tmpwatch/Tmpreaper tutto il tempo. In tal caso, potresti impostare un processo cron per automatizzare il processo di pulizia.
Durante l'installazione di Tmpreaper , creerà un cron job giornaliero (/etc/cron.daily/tmpreaper
). Questo lavoro leggerà le opzioni da /etc/timereaper.conf
archiviare e agire di conseguenza. Apri il file e modifica i valori secondo le tue esigenze. Per impostazione predefinita, Tmpreaper eliminerà i file di 7 giorni più vecchi. Puoi, tuttavia, modificarlo modificando il valore "TMPREAPER_TIME=7d"
nel file tmpreaper.conf.
Se usi "Tmpwatch", devi creare manualmente cron job e inserirvi la voce cron.
# crontab -e
Aggiungi la seguente riga:
0 1 * * * /usr/sbin/tmpwatch 30d /var/log/
Come per il lavoro cron sopra, Tmpwatch verrà eseguito tutti i giorni all'01:00 ed eliminerà i file che sono più vecchi di 30 giorni.
Per maggiori dettagli sull'impostazione dei lavori cron, fare riferimento al seguente collegamento.
- Una guida per principianti a Cron Jobs
Ancora una volta, attenzione durante l'utilizzo dei comandi Tmpwatch/Tmpreaper . Ricontrolla il percorso prima di eseguirlo per evitare la perdita di dati.
Per maggiori dettagli, fare riferimento alle pagine man.
$ man tmpwatch
Oppure,
$ man tmpreaper
Lettura correlata:
- Autotrash:uno strumento CLI per eliminare automaticamente i vecchi file cestinati
- Trash-cli:un cestino da riga di comando per sistemi simili a Unix
- Trova ed elimina il file più vecchio se ci sono più di X file in una directory
- Come trovare e rimuovere i pacchetti inutilizzati in Linux
- Come ripulire i file spazzatura in Ubuntu usando Ubuntu Cleaner