GNU/Linux >> Linux Esercitazione >  >> Linux

Elimina i file a cui non è stato effettuato l'accesso per un dato tempo su Linux

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 parametro. Il parametro definisce la soglia di età per la rimozione dei file. Puoi utilizzare i seguenti parametri time_spec per rimuovere i file.

  • 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

Linux
  1. Trovare e rimuovere file di grandi dimensioni che sono aperti ma sono stati eliminati?

  2. Trova i file che sono stati modificati oggi (o da un certo tempo fa) in Unix e Linux

  3. Linux Elimina file e directory

  4. Perché non vedo MSG_EOR per SOCK_SEQPACKET su Linux?

  5. Rimuovi solo i file nella directory su Linux NOT directory

Comando ls in Linux per elencare i file

Come trovare ed eliminare file che contengono un testo specifico nei loro nomi in Linux

Come eliminare i file elencati in un altro file in Linux

Come rimuovere/eliminare file in Linux usando il comando rm

Dropbox configurato per un server cloud Linux

Qual è la spiegazione più semplice per il fatto che le applicazioni Windows non sono compatibili con Linux?