Pulisci la directory $ HOME


16

Durante alcuni anni, nella mia $HOMEdirectory apparvero molti file e directory nascosti.

Vorrei eliminare continuamente quelli non necessari.

Come posso sapere quali applicazioni hanno creato quei file e directory nascosti.

Come posso essere sicuro che sia sicuro rimuovere i file e le directory nascosti e che nulla di importante andrà perso e nulla a seconda di essi non smetterà di funzionare?


2
Verificare quali applicazioni hanno creato cartelle e file può essere complicato. Solitamente correlare i file associati alle app create da sviluppatori decenti è semplice, ma non è sempre così. Se trovi una buona risposta, io per primo vorrei sapere di cosa si tratta.
0xSheepdog

2
@ 0xSheepdog auditd per il futuro - per la storia, praticamente nulla.
Jenny D,

Assicurati di avere un backup dei file prima di rimuoverli. (Ciò include la verifica che è possibile ripristinare i file.)
Jenny D

1. Stai usando Linux? Quale versione del kernel? (solo maggiore / minore per favore) 2. SELinux è abilitato o è possibile abilitarlo? 3. Hai accesso root?
Otheus,

Risposte:


15

Puoi semplicemente spostarli temporaneamente.

cd ~
mkdir .trash
find . ! -name . -prune ! -type d -atime +365 -exec \
    sh -c 'touch -a -- "$@"
           mv -- "$@" ~/.trash
    ' --   {} +

Ciò troverà tutti i file nella tua $HOMEdirectory - senza ricorrere in directory figlio - a cui non si accede da un anno. Ora aggiornerà il tempo di accesso per tutti loro, quindi li sposterà tutti in una directory denominata .trash. Se riscontri problemi tra il momento in cui lo esegui e il momento in cui decidi di iniziare a eliminare i vecchi file ~/.trash, puoi provare a spostare alcuni di loro indietro e vedere se qualcuno di quelli che hai inserito nel cestino fosse la causa.


Anche se questo tecnicamente non risponde alla domanda, penso che sia una soluzione abbastanza buona.
Jesse K,

1
@JesseKeilson - Penso che non tecnicamente rispondere alla domanda: Come posso essere sicuro che è sicuro per rimuovere i file nascosti e le directory e nulla di importante andranno perse e non a seconda di loro non smetterà di funzionare?
Mikeserv,

1
Alcuni filesystem sono montati con l'opzione "noatime". L'atime non verrà mai modificato, anche se lo sono mtime o ctime. Questo porterà la tua ricerca a spostare erroneamente i file recenti.
Adrien M.,

@AdrienM. - è vero. nel complesso, però, ogni persona sana di mente che vengo in contatto con usi relatimeinvece. da man mount:: relatimeAggiorna i tempi di accesso all'inode relativi alla modifica o alla modifica del tempo. L'ora di accesso viene aggiornata solo se l'ora di accesso precedente era precedente all'ora di modifica o modifica corrente. (Simile a noatime, ma non si rompe mutto altre applicazioni che devono sapere se un file è stato letto dall'ultima volta che è stato modificato.) E comunque, usare -me -mtimelavorare con w / modtime. o qualunque cosa ti piaccia.
Mikeserv,

Non risponde alla parte " e alle directory " della domanda. Per questo dovresti camminare su ogni directory. E controllare che tutti i file siano più vecchi di un anno.
nulla101

6

Se sei il root del tuo sistema, puoi usare la funzione di controllo del kernel per avere il massimo delle informazioni su chi / quando / cosa ha avuto accesso / creato / modificato i file. vedi questo tutorial per esempi di debian

Se non si dispone dell'accesso root, è possibile utilizzare un crontab o uno script con un ciclo infinito + sleep per eseguire i file lsof e grep in homedir. Vedi la manpage di lsof . Tuttavia, mostrerà solo le tue applicazioni che hanno un archivio di file aperto al momento del lancio di lsof. Se un'applicazione apre un file, lo modifica, quindi lo chiude, non vedrai questa modifica in lsof.

un one-liner come questo dovrebbe fare il lavoro: lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'

Un altro modo è utilizzare l' API del kernel inotify per verificare quando si accede a un file. Ahimè, è un sistema asincrono e non avrai dettagli come "quale app", "esattamente quando", "quale utente". Avrai solo un callback su "questo file è stato modificato / accessibile ...". Alcune applicazioni (Inotify, FAM, gamin) forniscono un facile accesso all'API


Ho appena provato a usare inotifyper innescare lsof. Il sistema è semplicemente troppo veloce perché questa idea funzioni: il processo è spesso terminato o ha chiuso il file prima che lsof possa essere eseguito. In alcuni casi, questo potrebbe ancora funzionare, ma probabilmente molto pochi.
Otheus,

auditd È l'unico sistema che fornisce tutti i dettagli, senza perdere nulla, poiché utilizza un percorso di codice specifico nel kernel. Tutti gli altri strumenti mancheranno le informazioni, mancheranno i dati poiché il processo sarà terminato / hanno chiuso il file fd.
Adrien M.,

Concordato. Stavo solo mettendo inotifica alla prova e confermando che non avrebbe davvero fatto il lavoro richiesto qui.
Otheus,

3

Puoi cercare atimee rimuovere file non utilizzati da molto tempo (a condizione che non hai configurato il tuo sistema per non usare atime), ma è piuttosto rischioso (vedi tmpreaperse vuoi andare in questo modo).

Invece suggerirei Bleachbit , un programma di GUI interattivo per rimuovere la cruft.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.