Boehrsi.de - Blog

Überflüssige Logs löschen

Erstellt am event Uhr von account_circle Boehrsi in label Archiv

Manchmal sind Logs hilfreich und manchmal nicht, vor allem sehr alte Logs dürften sich eher im “nicht” Bereich bewegen. Aus diesem Grund habe ich mir heute mal ein paar Gedanken gemacht wie ich einfach und schnell aufräumen kann. Bei mir geht es speziell um Fehler- und Zugriffslogs die schon etwas älter und somit nicht mehr relevant sind. Dieser landen auf meinem Server in GZip open_in_new Archiven oder werden mit .processed versehen. Konkret geht es mir um die diversen Logs meiner verschiedenen Seiten auf meinem Server, diese liegen in eigenen Ordnerstrukturen und ein manuelles suchen ist aufwendig und relativ undankbar. Ein kleines Script musste her und dieses findet ihr im unteren Teil der News. Weiterhin möchte ich noch auf Logrotate open_in_new hinweisen, welches ein gängiges und in den meisten Linux Versionen standardmäßig verfügbares Tool ist, um die Log-Verwaltung zu automatisieren. Danke an Tim für den Hinweis.

Zuerst benötigen wir eine Datei mit den abzuarbeitenden Ordnern, diese sind bei mir die diversen Seiten, die alle im selben Ordner liegen und dort dann ihre jeweiligen Strukturen bilden. Um es mir einfach zu machen navigierte ich einfach in den übergeordneten Ordner und nutzte folgenden Befehl.

ls -1 > dirs.txt

Falls auch andere Dateien neben Ordnern enthalten sind kann folgendes genutzt werden. In diesem Falle sollte dann allerdings der Slash in den Zeilen 6 und 7 hinter $dir entfernt werden.

ls -1d */ > dirs.txt

Weiterhin ist nun das kleine Script zu finden. In den ersten beiden Zeilen werden entsprechend die Pfade gesetzt. Zeile 3 startet dann das Auslesen der Datei, Zeile für Zeile. Zeile 4 speichert den aktuell zu verarbeitenden Ordner zwischen und in Zeile 6 und 7 wird die Löschung durchgeführt, der Parameter -f unterdrückt dabei die Ausgabe die erfolgt falls mal keine Dateien zum löschen vorhanden waren. In Zeile 5 erfolgt zwischendurch noch ein Ausschluss von nicht abzuarbeitenden Ordnern. Dies habe ich eingebaut, da mein Export der Ordner relativ lang ist und ich ihn unter Umständen häufig anpasse und verhindern will, dass aus Versehen relevante Logs der internen Server Systeme gelöscht werden. Zum Abschluss wird noch die IF Anweisung und die Schleife geschlossen und das Script ist abgearbeitet.

logPath="my/logs" corePath="/my/web/sites" for i in $(cat dirs.txt); do dir=$(echo $i) if [ $dir != "server-management" -a $dir != "local-db" ]; then rm $corePath/$dir/$logPath/*.processed -f rm $corePath/$dir/$logPath/*.gz -f fi done

Das ganze kann man nun natürlich entsprechend den eigenen Bedürfnissen anpassen und damit diverse kleine Probleme lösen. Ich persönlich nutze mittlerweile viele kleine Scripte die mir das Leben im Bereich Backups, Logs, Sicherheits-Checks usw. erleichtern.

Kommentare  
Kommentar erstellen
Mit dem Abschicken des Kommentars erklären sie sich mit der in der Datenschutzerklärung dargelegten Datenerhebung für Kommentare einverstanden. Spam, unangebrachte Werbung und andere unerwünschte Inhalte werden entfernt. Das Abonnieren via E-Mail ist nur für E-Mail Adressen erlaubt die Sie rechtmäßig administrieren. Widerrechtliche Abonnements werden entfernt.