Skript zum Ausräumen des Mülleimers
Review: Dieser Artikel ist für das Review freigegeben.
|
Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetestet Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.
|
Der Mülleimer ist in seiner Größe nicht limitiert, wie in einigen anderen Betriebssystemen. Man kann deshalb regelmäßig den gesamten Mülleimer leeren.
Alternativ dazu habe ich dieses Skript gebastelt, das alte Objekte aus dem Mülleimer entfernt bis sein Inhalt auf eine maximale Größe reduziert ist. Dateien mit dem aktuellen Tagesdatum werden nicht gelöscht. Hintergrundgedanke ist, dass Dateien, die vor langer Zeit gelöscht worden sind und seither nicht vermisst wurden, ruhig komplett vom System entfernt werden können. Dateien vom aktuellen Tag könnten noch einmal von Interesse sein.
Der Mülleimer befindet sich in ~/.local/share/Trash oder <mountpoint>/.Trash-<user-ID> bei externen Platten. Er enthält ein Verzeichnis "info", welches je gelöschter Datei oder Verzeichnis eine Datei mit dem gleichen Namen und der Endung .trashinfo enthält. Diese Datei ist folgendermaßen aufgebaut:
[Trash Info] Path=<ursprünglicher Pfad> DeletionDate=<Löschdatum und Uhrzeit>
Das Löschdatum ist identisch mit dem Änderungsdatum der Datei .trashinfo.
Das Verzeichnis files enthält die gelöschten Dateien und Verzeichnisse.
Dieses Skript besorgt sich das Löschdatum aus info und löscht jeweils den ältesten Eintrag bis
- die Größe des Mülleimers kleiner oder gleich der maximalen Größe (MaxMB) ist oder
- die älteste Datei von heute ist
Hier das Skript als ganzes:
#!/bin/bash
# Reduce the size of all Trashes to a maximum value
# reference: http://ubuntuforums.org/showthread.php?t=319211
# trash is in ~/.local/share/Trash or <mountpoint>/.Trash-<user-ID>
# directory "info" contains <filename|directoryname>.trashinfo with
# [Trash Info]
# DeletionDate=2008-10-09T19:12:03 which is identical to Änderungsdatum of file
# directory "files" the real file or directory
# This routine gets the deletion date from "info", and deletes the files in FIFO-manner until
# a) diskusage for the directory <= MaxMB
# b) oldest file is of today (no files, that were deleted today are removed)
#
# Maximum Size of Trash
MaxMB=1000
# get current date at midnight!
Currentdate=`date '+%F '`
touch --date=$Currentdate CurrentDateFile
for CleanWhat in ~/.local/share/Trash
do
echo cleaning $CleanWhat...
Disk_Usage=$(du -sm $CleanWhat |awk '{print $1}')
# loop while disk usage is > MaxMB
while [ $Disk_Usage -gt $MaxMB ]
do
# get oldest file
InfoFile=`ls -tA $CleanWhat/info |tail -1`
InfoFile=$CleanWhat/info/$InfoFile
# break loop if file is not older than today
if [ ! \( "$InfoFile" -ot CurrentDateFile \) ]
then
break
fi
# compose file to delete
echo .InfoFile: $InfoFile
echo ..`stat --printf=%y "$InfoFile"`
DelFile=`echo $InfoFile | sed -e 's/.trashinfo//;s!/info/!/files/!'`
# remove file, can also be a directory, remove it completely
yes | rm -vr "$DelFile"
DelFileError=$?
echo ..result: $DelFileError
yes | rm -v "$InfoFile"
InfoFileError=$?
echo ..result: $InfoFileError
# stop if there was an error
if [ $InfoFileError -gt 0 ]
then
break
fi
Disk_Usage=$(du -sm $CleanWhat |awk '{print $1}')
done
done
echo cleanung up...
rm -f CurrentDateFile
exit
Das Skript gibt es auch bei nopaste: 36943
Man kann das Skript auch in etwas veränderter Form auf ~/.thumbnails und ~/var/cache anwenden.
Warnung:
Das Skript wird aktuell unter Gnome2 eingesetzt. Die Logik des Mülleimers kann sich ändern. Vor dem Einsatz des Skripts auf dem System unbedingt eine Datensicherung durchführen und testen ob es korrekt funktioniert! |
Autotrash ist ein Skript, um Dateien aus dem Papierkorb zu löschen und das anhand des Alters, Dateinamen oder dem restlichen freien Speicherpatz zu tun. Dafür greift das Programm unter GNOME auf die FreeDesktop.org Trash-Info-Dateien zurück.