Während einiger Jahre $HOME
tauchten in meinem Verzeichnis viele versteckte Dateien und Verzeichnisse auf.
Ich möchte ständig die nicht benötigten löschen.
Wie kann ich herausfinden, welche Anwendungen diese versteckten Dateien und Verzeichnisse erstellt haben?
Wie kann ich sicher sein, dass die versteckten Dateien und Verzeichnisse sicher entfernt werden und nichts Wichtiges verloren geht und nichts, was davon abhängt, nicht aufhört zu funktionieren?
Antworten:
Sie können sie nur vorübergehend verschieben.
$HOME
Dadurch werden alle Dateien in Ihrem Verzeichnis gefunden, auf die seit einem Jahr nicht mehr zugegriffen wurde, ohne dass sie erneut in untergeordnete Verzeichnisse verschoben werden. Es aktualisiert die Zugriffszeit für alle von ihnen auf den aktuellen Stand und verschiebt sie dann in ein Verzeichnis mit dem Namen.trash
. Wenn zwischen der Ausführung und dem Zeitpunkt, an dem Sie mit dem Löschen alter Dateien beginnen, Probleme auftreten~/.trash
, können Sie versuchen, einige Dateien zurückzusetzen, um festzustellen, ob eine der von Ihnen in den Papierkorb gelegten die Ursache war.quelle
relatime
. vonman mount
:relatime
: Update inode Zugriffszeiten im Verhältnis zu ändern oder zu ändern Zeit. Die Zugriffszeit wird nur aktualisiert, wenn die vorherige Zugriffszeit vor der aktuellen Änderungs- oder Änderungszeit lag. (Ähnlich wienoatime
, aber es funktioniert nichtmutt
oder in anderen Anwendungen, die wissen müssen, ob eine Datei seit der letzten Änderung gelesen wurde.) Verwenden Sie-m
und-mtime
, um mit modtime zu arbeiten. oder was auch immer du magst.Wenn Sie Wurzel Ihres Systems sind, können Sie das verwenden Audit - Kernel - Funktion , um die maximale Informationen haben wer / wann / was zugegriffen / erstellt / geänderte Dateien. In diesem Tutorial finden Sie Beispiele mit Debian-Geschmack
Wenn Sie keinen Root-Zugriff haben, können Sie eine crontab oder ein Skript mit einer Endlosschleife + sleep verwenden, um lsof- und grep-Dateien in Ihrem Homedir auszuführen. Siehe manpage von lsof . Es werden jedoch nur Ihre Anwendungen angezeigt, bei denen zum Zeitpunkt des Starts von lsof ein Filedescriptor geöffnet ist. Sollte eine Anwendung eine Datei öffnen, bearbeiten und dann schließen, wird diese Änderung in lsof nicht angezeigt.
Ein Einzeiler wie dieser sollte den Job machen:
lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'
Eine andere Möglichkeit besteht darin, mithilfe der inotify- Kernel-API zu überprüfen, wann auf eine Datei zugegriffen wird. Leider ist es ein asynchrones System, und Sie werden keine Details wie "welche App", "genau wann", "welcher Benutzer" haben. Sie haben nur einen Rückruf zu "Diese Datei wurde geändert / zugegriffen ...". Einige Anwendungen (Inotify, FAM, Gamin) bieten Ihnen einfachen Zugriff auf die API
quelle
inotify
zu triggernlsof
. Das System ist einfach zu schnell, als dass diese Idee funktionieren könnte: Der Prozess ist häufig beendet oder hat die Datei geschlossen, bevor lsof ausgeführt werden kann. In einigen Fällen könnte dies noch funktionieren, aber wahrscheinlich nur sehr wenige.Sie können nach
atime
Dateien suchen und diese entfernen, die lange Zeit nicht verwendet wurden (vorausgesetzt, Sie haben Ihr System nicht für die Verwendung von atime konfigurierttmpreaper
).Stattdessen würde ich Bleachbit vorschlagen , ein interaktives GUI-Programm zum Entfernen von Cruft.
quelle