Ältestes File in einem Directory löschen

Post Reply
Message
Author
Kurt

Ältestes File in einem Directory löschen

#1 Post by Kurt »

Hi!

Ich habe ein Directory in dem per Cron-Job jede Woche ein Backup mit der Data-Partition des Rechners mit einem entsprechenden Script erstellt wird. Ab und zu starte ich das Backup-Script auch von Hand. Die Dateien haben dann folgendes Format: data-YYYYMMDD.tar.gz, also z.B. data-20030302.tar.gz. Nun möchte ich aber höchstens 7 verschiedene Versionen des Data-Backups behalten. Momentan mache ich das folgendermassen:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
rm /mnt/backup/trillian/trillian-data-`date -d '7 weeks ago' +%Y%m%d`.tar.gz
</font><hr></pre></blockquote>

Sobald ich aber das Backup-Script von Hand starte oder der Rechner während des Cron-Jobs gerade ausgeschaltet war und der Cron-Job von Anacron beim nächsten Start ausgeführt wurde, fällt mein Script auf die Nase. Wie kann ich es abändern, dass jeweils das älteste Backup gelöscht wird? Sprich ich habe im Backup-Directory sieben Backups und bei jedem Start des Backup-Scripts wird ein neues erstellt und das älteste wieder gelöscht.

Vielen Dank,
Kurt

Jochen

Re: Ältestes File in einem Directory löschen

#2 Post by Jochen »

Ich würde das Datum im Namen erst mal als Information für den Betrachter abtun und es nicht auszuwerten versuchen. Wenn Du einfach nur die letzten 7 Backups behalten willst, würde ich wie folgt vorgehen:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">rm -f $(ls -t trillian-data-* | tail -n +8)</font><hr></pre></blockquote>"ls -t" sortiert nach der Modification Time, jüngste zuerst, älteste zuletzt. "tail" gibt erst ab Zeile 8 die aufgelisteten Dateinamen weiter. Wenn also nur 1-7 Dateien existieren, wird nix ausgegeben. Durch die Option "-f" bei rm wird dazu keine Fehlermeldung ausgegeben, sondern einfach weitergemacht. Erst die 8. und weitere Dateien werden ausgegeben und dann durch rm gelöscht.

Jochen

Kurt

Re: Ältestes File in einem Directory löschen

#3 Post by Kurt »

Hi Jochen!

Cool, Danke! Du solltest wirklich ein Buch über Shells schreiben :).

Gruss,
Kurt

bazik

Re: Ältestes File in einem Directory löschen

#4 Post by bazik »

>> Cool, Danke! Du solltest wirklich ein Buch über Shells schreiben :).

Sag ich doch ;)

Jochen

Re: Ältestes File in einem Directory löschen

#5 Post by Jochen »

Und das, wo Lösung oben bis auf die Kommandosubstitution $() und die Pipeline gar nix mit der Shell an sich zu tun hat... <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Jochen

Post Reply