Ich habe versucht, mit logrotate eine Datenbanksicherung zu speichern für:
- letzte 7 Tage (täglich)
- letzte 4 Wochen (wöchentlich)
- letzte 12 Monate (monatlich)
Ich habe ein Logrotate-Skript wie dieses erstellt, aber nur die täglichen Rotationen werden ausgeführt.
Was fehlt mir oder mache ich falsch? Bricht das Datumsformat * ' wöchentlich ' * das Skript? Wenn ja, wie kann ein eindeutiger Name für jeden gedrehten Dateityp festgelegt werden? Zum Beispiel mit 'extension .week' ?
Hinweis: Ich habe die Vor- und Nachrotation bei wöchentlichen und monatlichen Rotationen verwendet, um eine Dummy-Datei zu erstellen, um zu überprüfen, ob diese ausgeführt werden, aber die Dateien werden nie erstellt.
Hinweis 2: Die Datei /backups/db.sql wird korrekt erstellt
#daily (son)
"/backups/db.sql" {
daily
rotate 7
missingok
copy
compress
}
#weekly (father)
"/backups/db.sql" {
weekly
rotate 4
missingok
copy
dateext
dateformat _weekly_%Y-%m-%d.
compress
prerotate
touch /backups/weekly_pre.txt
endscript
postrotate
touch /backups/weekly_post.txt
endscript
}
#monthly (grandfather)
"/backups/db.sql" {
monthly
rotate 12
missingok
copy
dateformat _monthly_%Y-%m-%d.
compress
prerotate
touch /backups/monthly_pre.txt
endscript
postrotate
touch /backups/monthly_post.txt
endscript
}
Wenn ich logrotate manuell mit ausführe
logrotate -d /path/to/logrotate_job
Ich bekomme
# logrotate -d /path/to/logrotate_job
reading config file logrotate_job
reading config info for "/backups/db.sql"
error: db_backup:11 duplicate log entry for /backups/db.sql
error: found error in "/backups/db.sql" , skipping
removing last 1 log configs
Handling 2 logs
rotating pattern: "/backups/db.sql" after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /backups/db.sql
log does not need rotating
rotating pattern: "/backups/db.sql" 1048576 bytes (no old logs will be kept)
empty log files are rotated, old logs are removed
Es scheint, dass dieselbe Datei nicht gedreht werden kann. Wie kann also die tägliche Datei gedreht werden, wenn ihr Name das Datum enthält?
Der Versuch, eine wöchentliche Aufgabe einzustellen:
kein Datum
prerotate cp dailyrotated to dailyrotated.week
Und monatlich einstellen
kein Datum
prerotate cp weekrotated to weekrotated.month
weekly
Abschnitt auf eingestelltdaily
.