Aufgabenplaner Script um ältere Datei zu löschen.

Status
Für weitere Antworten geschlossen.

peterpan321

Benutzer
Mitglied seit
19. Mai 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Guten Tag,
ich habe mehrere Dateien in einem Verzeichnis.
Jetzt möchte ich ein Aufgabenplaner script erstellen, welches immer wenn es ausgeführt wird, alle Dateien löscht - bis auf die neuste. Dass also nur die neuste Datei überbleibt.
Kann mir da jemand behilflich sein?

Ich hatte schon folgendes probiert:
ls -td /pfad/* |tail -n 1|xargs rm -rf

Vielen Dank
peterpan321
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.171
Punkte
754
Willkommen im Forum!

Werden die Dateien in konstantem Abstand erstellt - also z.B. täglich? Wenn ja ließe sich das mit einem find lösen.
 

peterpan321

Benutzer
Mitglied seit
19. Mai 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Nein, werden sie nicht :/ Der Befehl mit mtime/atime ist leider nicht meine Wunschvorstellung :eek:
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.550
Punkte für Reaktionen
1.390
Punkte
234
Ich habe ein Script zum Aufräumen von alten Backups im Einsatz. Es kontrolliert Dateien in einem Verzeichnis und löscht bis auf eine festgelegte Anzahl alle älteren Dateien.

Rich (BBCode):
KEEP=ANZAHL
BACKUPS=`find /volume1/ORDNER -name "DATEI" | wc -l | sed 's/\ //g'`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /volume1/ORDNER/DATEI | head -n 1 | xargs rm -f 
BACKUPS=`expr $BACKUPS - 1` 
done

ANZAHL => Anzahl der zu behaltenen Dateien
DATEI => Dateiname
ORDNER => Ordner deiner Wahl

Die Dateinamen beinhalten bei mir u.a. das Datum. So gebe ich mit Sternchen nur einen Teil vom Dateinamen an (z.b. backup-horst-*.tgz statt backup-horst-20180519.tgz).
 

peterpan321

Benutzer
Mitglied seit
19. Mai 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Schon mal vielen Dank, das sieht schon ganz gut aus.

Rich (BBCode):
KEEP=1
BACKUPS=`find /volume1/Ich/Ordner -name "*" | wc -l | sed 's/\ //g'`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /volume1/Ich/Ordner/* | head -n 1 | xargs rm -f 
BACKUPS=`expr $BACKUPS - 1` 
done

Ich habs jetzt mal so probiert, aber das funktioniert leider noch nicht
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.550
Punkte für Reaktionen
1.390
Punkte
234
Mit nur einem Sternchen habe ich es nie probiert, sollte von der Logik her aber funktionieren.

Stell mal keep auf 2, da im Script noch einmal 1 abgezogen wird.
 

peterpan321

Benutzer
Mitglied seit
19. Mai 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Habs jetzt noch mal probiert, es dann noch etwas umgeschrieben:

KEEP=2
BACKUPS=`find /volume1/Ich/Ordner -type f | wc -l`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /volume1/Ich/Ordner/* | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`
done

aber das ist leider auch keine Lösung..
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.550
Punkte für Reaktionen
1.390
Punkte
234
leider nicht meine Wunschvorstellung
funktioniert leider noch nicht
das ist leider auch keine Lösung
leider, leider, leider... nicht meine Wunschvorstellung, funktioniert nicht, keine Lösung...
Das ist kein konstruktives Feedback, geschweige eine Mitarbeit, sondern die Erwartungshaltung ohne nennenswerte Eigenarbeit eine fertige Lösung präsentiert zu bekommen.
Ich bin nicht der Schlaraffenlandlieferant und stochere auch nicht gerne im Nebel rum. Daher bin ich hier doppelt raus.

Da es um ein herstellerunabhängiges Problem geht, empfehle ich ein Linuxforum zu besuchen oder einen Progger zu kontaktieren.
 

peterpan321

Benutzer
Mitglied seit
19. Mai 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Vielen Dank. Leider ist das jetzt auch keine Hilfe. Dann muss ich leider wo anders Fragen.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat