Wie kann ich alte Protokolle effizient umbenennen und komprimieren, nachdem in Logrotate die Komprimierung aktiviert wurde?

1802
Linux2012

Ich habe vor kurzem die Komprimierung in logrotate.conf auf mehreren Systemen aktiviert. Alte unkomprimierte Protokolle bleiben mit ihrer alten Nummerierung erhalten. Ich möchte ein Skript ausführen, um diese alten Protokolle dort abzulegen, wo sie in der Rotation numerisch sind, wenn die Komprimierung nicht aktiviert worden wäre. Diese Protokolle würden messages, boot.log, spoolerund andere.

[user@test ~]$ ls -ltr /var/log/messages* -rw------- 1 root root 283380 Jan 22 03:49 /var/log/messages.4 -rw------- 1 root root 212641 Jan 29 03:59 /var/log/messages.3 -rw------- 1 root root 278964 Feb 5 04:01 /var/log/messages.2 -rw------- 1 root root 7828 Feb 16 04:02 /var/log/messages.7.gz -rw------- 1 root root 12417 Feb 17 04:02 /var/log/messages.6.gz -rw------- 1 root root 2289 Feb 18 04:02 /var/log/messages.5.gz -rw------- 1 root root 2135 Feb 19 04:02 /var/log/messages.4.gz -rw------- 1 root root 2138 Feb 20 04:02 /var/log/messages.3.gz -rw------- 1 root root 2403 Feb 21 04:02 /var/log/messages.2.gz -rw------- 1 root root 2339 Feb 22 04:02 /var/log/messages.1.gz -rw------- 1 root root 8496 Feb 22 10:19 /var/log/messages 

Wenn ich diese manuell umbenennen würde, würde ich eine mv messages.2 messages.8.tmpfür jedes Protokoll tun, so dass keine Datei mit den aktuell benannten Nachrichten.8 überschrieben wird. Nachdem alle Dateien umbenannt wurden, würde ich eine mv messages.8.tmp messages.8gefolgt von einer gzip -9 messages.8.

Ich habe mit for und while loops und sed gespielt, bin aber immer noch ein Anfänger.

Die Zahlen für die neuesten und ältesten unkomprimierten Protokolle variieren von System zu System.

In Zukunft werde ich ältere Protokolle manuell komprimieren, bevor Sie compress in der logrotate.conf einschalten.

Zusammenfassend zwei Fragen:

  1. Gibt es eine Möglichkeit, logrotate.conf diese älteren Dateien erkennen und komprimieren zu lassen?
  2. Was ist der beste Weg, um die manuelle Rotation dahin zu bringen, wo sich die alten Protokolldateien sequenziell befinden, gefolgt von einer Komprimierung?
0
Ich verstehe, dass dies mit logrotate nicht möglich ist. Was ich jetzt frage, ist der beste Weg, um Skripte für das Umbenennen und das Entpacken dieser Protokolle dahin zu schreiben, wo sie in der Reihenfolge wären. Ich muss dies auf einer beträchtlichen Anzahl von Systemen tun. Wenn ich also nur ein einzelnes Skript ausführen kann, würde ich viel Zeit sparen. Linux2012 vor 12 Jahren 0

2 Antworten auf die Frage

1
jofel

Soweit ich weiß, kann logrotate keine alten Dateien an ihre Stelle bringen. Sie müssen es also von Hand / mit einem kleinen Skript machen.

Bitte beachten Sie, dass logrotate abhängig von Ihrer Konfiguration die alte Protokolldatei nur für eine begrenzte Zeit rotiert und diese dann löscht. Das Wiederherstellen alter Sicherungsdateien kann daher unbrauchbar sein, bis Sie Ihre logrotate-Konfiguration so geändert haben, dass alte Protokolle (Konfigurationsvariable rotate) niemals gelöscht werden .

Wie @jofel sagte, mach sie einfach zusammen. Gzip fügt standardmäßig die Erweiterung .gz hinzu, und danach wird Logrotate gesucht. Magellan vor 12 Jahren 0
0
RecentCoin

Log Rotate kann nicht, aber gzip messages.?wird das für Sie erledigen.