beidermachtvongreyscull
Goto Top

Mittels Batch-Script Exchange-Logs sammeln und archivieren

Ich möchte hier eine recht einfache Lösung für ein Log-Archiving vorstellen.

Jeder kennt das Problem, dass die meisten Dienste LOG-Dateien im Textformat erzeugen und davon mehr als genug.
Manchmal ist es sinnvoll, diese zu archivieren, falls es zu gerichtlichen Auseinandersetzungen kommt oder aus sonstigem wichtigen Grund der Nachweis über eine erhaltene oder nicht erhaltene Email geführt werden muss.

Dazu dient folgendes Script:
REM @ECHO OFF
@ECHO.
REM *** Datumsberechnungen: *******************************************
REM * Das aktuelle Systemdatum wird zerlegt in Tag, Monat, Jahr.
REM * Von der Jahresvariable wird 1 abgezogen und das Ergebnis in %Vorjahr% gespeichert
REM * %Vorjahr% wird als Namensteil des Archivs verwendet und zum Suchen von Logdateien *2015*.log
REM * die in C:\Logs gespeichert sind.
REM *******************************************************************
REM @ECHO Date is %Date%
REM SET DayOfWeek=%Date:~0,3%
SET Day=%Date:~,2%
SET Month=%Date:~3,2%
SET Year=%Date:~6,4%
SET Today=%Date:~6,4%-%Date:~3,2%-%Date:~,2%
SET /a Vorjahr=%Year%
SET /a Vormonat=%Month%-1
REM @ECHO Year is %Year%, Month is %Month%, Day is %Day%, DayOfWeek is %DayOfWeek% 
REM @ECHO Today is %Today%
REM @ECHO %Vorjahr%
REM @ECHO.

REM *** Logfiles einsammeln und unter C:\Logs ablegen (VERSCHIEBEN!)
@ECHO *** Exchange-Logfiles verschieben nach C:\Logs ***
c:
cd "\Program Files\Microsoft\Exchange Server\V14\TransportRoles\Logs"  
for /f "tokens=*" %%f in ('dir *.log /a:-D /s /b') do move "%%f" C:\Logs\ >NUL  
cd \Log-Management

REM *** Liste zu archivierender Dateien erstellen
@ECHO *** Liste zu archivierender Dateien erstellen ***
REM dir /s /b /A:-D C:\Logs\*%Year%0%Vormonat%* > %CD%\dateien.txt
dir /s /b /A:-D C:\Logs\*.* > %CD%\dateien.txt

REM *** Wenn keine zu archivierenden Dateien vorhanden sind, gehe direkt zum Ende
for /f %%i in ("%CD%\dateien.txt") do set size=%%~zi  
if %size% equ 0 GOTO Ende

REM sonst *** Archivprogramm aufrufen ***
@ECHO *** Packprogramm aufrufen; Archiv wird in C:\Log-Archiv erstellt ***
%CD%\7za.exe a -t7z -mx9 -mmt1 c:\Log-Archiv\%Vorjahr%.7z @%CD%\dateien.txt
@ECHO *** archivierte Originaldateien werden gelöscht ***
for /F "tokens=*" %%A in (%CD%\dateien.txt) do del "%%A"  

:Ende
del %CD%\dateien.txt
@ECHO *** Fertig ***

Kurz zur Methodik:
  • Es werden im Programmverzeichnis und der entsprechenden Unterstruktur des Exchangeservers (hier ein EX2010) alle Dateien gesucht, die auf *.log enden. Diese werden verschoben nach c:\logs. Dateien, die durch einen Dienst gesperrt sind, bleiben davon unberührt.
  • Der Inhalt des Verzeichnisses C:\logs wird in eine Datei dateien.txt geschrieben, die im Scriptverzeichnis erstellt wird.
  • Im Scriptverzeichnis liegt die Kommandozeilenversion des Packers 7zip (7za.exe). Diese wird mit entsprechenden Optionen aufgerufen.
Optionen sind u.a.:
Archivdateiname: Aktuelles Jahr.7z
Auftragsliste: dateien.txt

Wenn die entsprechende Archivdatei noch nicht existiert, wird sie erstellt und sukzessive erweitert.
Die Kompressionsrate liegt bei 1% - 10% was einen nicht unerheblichen Vorteil in Speicherplatzverbrauch bedeutet.

Was jetzt, wenn man mal etwas braucht?

Hierzu nutze ich dann das Programm DocFetcher (ist kostenlos!). Ich kann mir im Falle unklarer Informationen somit schnell alle Logdateien, nach dem ich sie entpackt habe
über die Struktur indizieren.

Um die richtigen Protokoll-Snippets zu bekommen reicht dann Excel oder LibreOffice Calc, um die entsprechend lokalisierte Datei zu sortieren.

Content-Key: 345586

Url: https://administrator.de/contentid/345586

Printed on: April 19, 2024 at 07:04 o'clock