Ich muss täglich Daten und Konfigurationsdateien auf diesem Server sichern. Ich muss behalten:
- tägliche Backups für eine Woche
- wöchentliche Backups für einen Monat
- monatliche Backups für ein Jahr
- jährliche Backups danach
All dies wird über ein Shell-Skript erreicht, das täglich von cron ausgeführt wird.
So sollten die Sicherungsdateien nach 10 Jahren Laufzeit aussehen:
blog-20050103.tar.bz2
blog-20060102.tar.bz2
blog-20070101.tar.bz2
blog-20080107.tar.bz2
blog-20090105.tar.bz2
blog-20100104.tar.bz2
blog-20110103.tar.bz2
blog-20120102.tar.bz2
blog-20130107.tar.bz2
blog-20130902.tar.bz2
blog-20131007.tar.bz2
blog-20131104.tar.bz2
blog-20131202.tar.bz2
blog-20140106.tar.bz2
blog-20140203.tar.bz2
blog-20140303.tar.bz2
blog-20140407.tar.bz2
blog-20140505.tar.bz2
blog-20140602.tar.bz2
blog-20140707.tar.bz2
blog-20140728.tar.bz2
blog-20140804.tar.bz2
blog-20140811.tar.bz2
blog-20140816.tar.bz2
blog-20140817.tar.bz2
blog-20140818.tar.bz2
blog-20140819.tar.bz2
blog-20140820.tar.bz2
blog-20140821.tar.bz2
blog-20140822.tar.bz2
Antworten:
Sie übertreiben dies ernsthaft. Schlecht.
Hier ist ein Pseudocode:
daily
Verzeichnis abdaily
Backupsweekly
Verzeichnis abweekly
Backupsmonthly
Verzeichnis abmonthly
Sicherungenyearly
Verzeichnis abDie Menge an Logik, die Sie implementieren müssen, ist ungefähr gleich, oder? KUSS.
Das sieht einfacher aus:
Oder nach Anzahl der Dateien anstelle des Alters:
quelle
Wenn Sie beispielsweise nur 8 tägliche Backups und 5 wöchentliche Backups (jeden Sonntag) aufbewahren möchten, funktioniert dies folgendermaßen:
Ab heute (10.11.2014) wird Folgendes ausgegeben:
Als Übung müssen Sie nur alle Sicherungsdateien löschen, deren Namen nicht im
keep
-array erscheinen.Wenn Sie 13 monatliche Backups (jeden ersten Sonntag im Monat) und 6 jährliche Backups (jeden ersten Sonntag im Jahr) erstellen möchten, wird es etwas komplizierter:
Ab heute (10.11.2014) wird Folgendes ausgegeben:
Löschen Sie wie oben alle Sicherungsdateien, die in diesem Array nicht vorhanden sind.
quelle
rm /dir/*.* except keep[@]
?Wie in einem Kommentar erwähnt, ist es normalerweise am besten, die Aufgabe der Verwaltung von Sicherungen an eine Sicherungsverwaltungssoftware zu delegieren.
Aber hier ist die Logik in Bash zum Löschen älterer Backups nach Ihren Wünschen
PHP-Code, der anzeigt, welche Dateien nach 3520 Tagen noch ausgeführt werden
https://ideone.com/n2ymQy
quelle