Linux: Skript zum automatischen löschen der ältesten X Prozent, falls Ordner größer als Y?

2 Antworten

Mach ein C Programm, ist finde ich leichter als ein bash script, aber was bringt es dir wenn du einen haufen kleine alte Dateien hast weil die größeren immer gelöscht werden. Auch wenn du Dateien ziemlich lange beahlten wirst, du wirst mit diesem Ansatz irgendwann einen haufen kleiner Datein haben die du nicht mehr brauchst. Sag einfach lösche alle Datein die älter sind als 1 Woche, bzw mach nach einer Woche eine automatische kopie übers Netzwerk

Hallo

Das Skript soll die ältesten X Prozent der Dateien in einem Ordner löschen

Die älteste Datei findest Du zum Beispiel so:

(export LC_ALL=C
 find . -type f -printf '%T@\t%p\0' 2>/dev/null |
   sort -zg | tr '\0\n' '\n\0' | head -n 1 |
   cut -f2- | tr '\0' '\n')

Ersetzt Du da das head -n 1 durch head -n 8 wären es eben die 8 ältesten Dateien. (ohne den Parameter -n wären es immer 10

Um Prozentual zu machen wäre eine Berechnung nötig, etwa mit dem basic calculator:

ANZAHL=$(ls -1c .| wc -l) # Errechnen der Menge an Dateien
bc -l <<< $ANZAHL/100*30 | cut -d'.' -f1

Hier würden also die menge von 30% aller Dateien des aktuellen Verzeichnisses ausgegeben werden.

falls die Dateien im Ordner größer als Y GB sind.

Die größten Dateien findet man beispielsweise damit:

find . -type f -size +1048576 -printf "%s:%h%f\n" 2>/dev/null | sort -nr | head

oder damit

ls -lsh | head -n 11 | tail | grep -v ^d | sed 's/^[ \t]*//;s/[ \t]*$//' | awk '{print $1,$10}'

Das Ganze nur noch sinnvoll miteinander verbinden, etwa mit einer if Anweisung

Gedacht ist das ganze für eine Überwachungskamera,

Dann schau Dir mal das Video an:

https://www.youtube.com/watch?v=XDZ187MpAho

Die 2&gt in den Code Tags sind eigentlich > Zeichen!

Linuxhase

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102