Ich habe einen Anwendungsserver unter Windows 2012 R2, der ein hohes Volumen an Protokolldateien generiert, bis das Anwendungsvolumen halbjährlich nicht mehr über genügend freien Speicherplatz verfügt. Aufgrund von Einschränkungen durch die Anwendung selbst kann ich die Protokolldateien nicht verschieben oder umbenennen oder die NTFS-Datendeduplizierung aktivieren. Da dies noch keine zehn Jahre her ist, möchte ich dazu keinen Batch oder vbscript verwenden für mich.
Die Protokolldateien befinden sich alle in verschiedenen Unterordnern des Anwendungsinstallationsverzeichnisses mit unterschiedlichen Erweiterungen (eine Komponente fügt das Datum als Protokolldateierweiterung hinzu), und das Anwendungsinstallationsverzeichnis enthält einen Leerzeichen, da die Anwendungsentwickler böswillig sind. Die Unterordner, in die die Protokolle geschrieben werden, werden zumindest ausschließlich zum Schreiben von Protokollen verwendet. Dies ist auch eine stark CPU-gebundene Anwendung, daher möchte ich die Protokollordner nicht selbst komprimieren und die CPU-Strafe für das Schreiben komprimierter Dateien für die Protokolle verursachen.
Wie kann ich PowerShell verwenden, um die NTFS-Komprimierung direkt für Protokolldateien zu aktivieren, die älter als x Tage sind?
quelle
Der wiederholte Code kann durch Verwendung eines Arrays und einer foreach-Schleife vermieden werden:
..... .....
quelle
Invoke-WmiMethod -Path "Win32_Directory.Name = 'C: \ FolderToCompress'" -Name compress
quelle
forfiles /m *. log /p path /d -7 /c "cmd /c compact @path"
wäre es mit den alten oder für Ordner wäre es fast das gleicheWenn sich diese Protokolldateien nicht in C befinden: Verwenden Sie die Server 2012 R2-Deduplizierungsfunktion. Sie können es dann so konfigurieren, dass nur .log-Dateien dedupiert werden, die drei Tage alt sind (Standardeinstellung). Die zweite Methode, um dies unter Kontrolle zu bringen, oder wenn es sich in C befindet: Verschieben Sie das Protokollverzeichnis auf ein anderes Laufwerk und verwenden Sie eine JUNCTION, um auf den neuen Ort zu verweisen, der am einfachsten mit der Hardlink-Shell-Erweiterung von https: // schinagl zu erstellen ist .priv.at / nt / hardlinkshellext / linkshellextension.html - und verwenden Sie dann die 2012 R2-Deduplizierung. Ich sehe Deduplizierungsraten weit über 90% bei Protokolldateien und den SQl-Dump-for-Backup-Laufwerken.
quelle