Debian Linux älteste Datei löschen
Hallo liebe Community,
ich habe folgendes Problem:
Ich synchronisiere täglich auf einen Backupserver meine Daten (von verschiedenen Servern).
Dort werden am Backupserver Ordner angelegt, die dann gesichert (z.B. 20140301-Server-1) werden.
Dann sind wieder einzelne Backups dabei, die eben nur 20140301-Srv2.7z Dateien sichern.
Ich habe bereit eine Routine geschrieben, sobald der lokale Speicherplatz 90% übersteigt, das dieser automatisch eine Mail rausschickt.
Nun würde ich jedoch gerne nach erreichen der 90% automatisch vom Mountpoint /backups die ältesten 5 Dateien automatisch löschen lassen.
Leider habe ich bis jetzt immer nur Scripts gefunden, die ganze Ordner löschen, ... mir wäre es egal wenn die Ordner bestehen bleiben, und nur die Dateien gelöscht werden.
Die meisten Scripts die ich gefunden habe, löschen nur Dateien "älter als" aber nicht "die ältestens vom gesamten Verzeichnis..."
Habt ihr eine Idee oder so etwas schon mal umgesetzt? Einfach die ältesten 5 Dateien zu löschen..
Vielen Dank!
Lg Iceget
ich habe folgendes Problem:
Ich synchronisiere täglich auf einen Backupserver meine Daten (von verschiedenen Servern).
Dort werden am Backupserver Ordner angelegt, die dann gesichert (z.B. 20140301-Server-1) werden.
Dann sind wieder einzelne Backups dabei, die eben nur 20140301-Srv2.7z Dateien sichern.
Ich habe bereit eine Routine geschrieben, sobald der lokale Speicherplatz 90% übersteigt, das dieser automatisch eine Mail rausschickt.
Nun würde ich jedoch gerne nach erreichen der 90% automatisch vom Mountpoint /backups die ältesten 5 Dateien automatisch löschen lassen.
Leider habe ich bis jetzt immer nur Scripts gefunden, die ganze Ordner löschen, ... mir wäre es egal wenn die Ordner bestehen bleiben, und nur die Dateien gelöscht werden.
Die meisten Scripts die ich gefunden habe, löschen nur Dateien "älter als" aber nicht "die ältestens vom gesamten Verzeichnis..."
Habt ihr eine Idee oder so etwas schon mal umgesetzt? Einfach die ältesten 5 Dateien zu löschen..
Vielen Dank!
Lg Iceget
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 231509
Url: https://administrator.de/forum/debian-linux-aelteste-datei-loeschen-231509.html
Ausgedruckt am: 05.04.2025 um 06:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo Iceget,
genau soetwas habe ich bei mir auch gemacht. Nur das ich mit jedem neuem Backup (3 Dateien), eben auch 3 alte lösche und so immer nur Backups der letzten X Tage (am Anfand habe ich leere DummyDateien erstellt und ihnen mit
Bekomme es gerade nicht 100%ig zusammen, musst du noch mal probieren.
Vieleicht war es auch
Also den Inhalt des Verzeichnisses nach Zeit sortiert (-t) ausgeben und dann (head -n3) nur die ersten 3 Dateien.
(
-r um die Liste in umgekehrter Reihenfolge auszugeben... weiß gerade nicht in welche Richtung -t sortiert
)
~Arano
genau soetwas habe ich bei mir auch gemacht. Nur das ich mit jedem neuem Backup (3 Dateien), eben auch 3 alte lösche und so immer nur Backups der letzten X Tage (am Anfand habe ich leere DummyDateien erstellt und ihnen mit
touch
den passenden Zeitstempel versehen).Bekomme es gerade nicht 100%ig zusammen, musst du noch mal probieren.
for oldFile in `ls -t "/backupdir" | head -n3`; do
echo "rm $oldFile"
done
ls -tr
Also den Inhalt des Verzeichnisses nach Zeit sortiert (-t) ausgeben und dann (head -n3) nur die ersten 3 Dateien.
(
-r um die Liste in umgekehrter Reihenfolge auszugeben... weiß gerade nicht in welche Richtung -t sortiert
)
~Arano
Hi,
Oh, das ist ein guter Hinweis... aber ich verstehe es nicht !?
@Cthluhu: Wieso sollte denn dann alles gelöscht werden ?
Das sieht doch gut aus:
Aber es ist wohl doch
Den die Datei "asd" habe ich zuerst angelegt -> die älteste und
die Datei "sdf" als letztes -> die jüngste.
In meinem Fall würde ich also das gerade gemachte Backup , als erste wieder löschen - auweia...
Also wie schon vorgeschlagen mit
~Arano
Oh, das ist ein guter Hinweis... aber ich verstehe es nicht !?
@Cthluhu: Wieso sollte denn dann alles gelöscht werden ?
Das sieht doch gut aus:
arano@home:~/test$ touch asd
arano@home:~/test$ touch wer
arano@home:~/test$ touch sdf
arano@home:~/test$ for i in `ls -t|head -n2`; do echo " rm $i"; done
rm sdf
rm wer
arano@home:~/test$ for i in `ls -t|head -n3`; do echo " rm $i"; done
rm sdf
rm wer
rm asd
arano@home:~/test$ for i in `ls -t|head -n4`; do echo " rm $i"; done
rm sdf
rm wer
rm asd
arano@home:~/test$ for i in `ls -t|head -n5`; do echo " rm $i"; done
rm sdf
rm wer
rm asd
arano@home:~/test$
Aber es ist wohl doch
`ls -tr`
Den die Datei "asd" habe ich zuerst angelegt -> die älteste und
die Datei "sdf" als letztes -> die jüngste.
In meinem Fall würde ich also das gerade gemachte Backup , als erste wieder löschen - auweia...
man ls
-t Nach Änderungszeit sortieren
Das listet mir die neueste Datei zuerst und die älteste zuletzt auf.-t Nach Änderungszeit sortieren
Also wie schon vorgeschlagen mit
-r
umdrehen, oder anstelle von head
-> tail
verwenden.~Arano
Hi Arano,
Der Denkfehler liegt schon in der Aufgabenstellung. Es handelt sich um Backups. Sind nur 3 Backups vorhanden und man löscht die letzten 5 Backups, sind alle Backups gelöscht (siehe Zeile 15 in deinem Beispiel). Da muss noch eine Abfrage rein, dass immer zumindest ein Backup übrig bleibt.
mfg
Cthluhu
Der Denkfehler liegt schon in der Aufgabenstellung. Es handelt sich um Backups. Sind nur 3 Backups vorhanden und man löscht die letzten 5 Backups, sind alle Backups gelöscht (siehe Zeile 15 in deinem Beispiel). Da muss noch eine Abfrage rein, dass immer zumindest ein Backup übrig bleibt.
mfg
Cthluhu
Hahaha... achso ja stimmt !
Ich dachte der Fehler wäre im Script... also das etwas wie
Aber du hast Recht !
Da es sich um Backups handelt, lieber auf Nummer sicher gehen.
Ich lösche bei mir zwar auch nur, sofern es beim kopieren keine Fehler gab. Und um etwas Vorlauf zu erzeugen habe ich einfach ein paar leere Text-Dateien erstellt. Aber die Sicherung, das mindestens das letzte nicht versehentlich weg gelöscht wird, kann definitiv nicht schaden.
Aber da kümmere ich mich später mal drum. Momentan läuft DIESES Backup eh nicht
da ist das egal
Mir ist die Backupfestplatte kaputt gegangen und die Gelegenheit wird genutzt etwas umzurüsten
Bei wieder einrichten wird es dann angepasst.
Danke für den Hinweis !
Schönen Abend noch
~Arano
Ich dachte der Fehler wäre im Script... also das etwas wie
`rm *`
erzeugt würde was dann alles löscht.Aber du hast Recht !
Da es sich um Backups handelt, lieber auf Nummer sicher gehen.
Ich lösche bei mir zwar auch nur, sofern es beim kopieren keine Fehler gab. Und um etwas Vorlauf zu erzeugen habe ich einfach ein paar leere Text-Dateien erstellt. Aber die Sicherung, das mindestens das letzte nicht versehentlich weg gelöscht wird, kann definitiv nicht schaden.
Aber da kümmere ich mich später mal drum. Momentan läuft DIESES Backup eh nicht
Mir ist die Backupfestplatte kaputt gegangen und die Gelegenheit wird genutzt etwas umzurüsten
Bei wieder einrichten wird es dann angepasst.
Danke für den Hinweis !
Schönen Abend noch
~Arano