Birçok kez özellikle uygulama sunucularında biriken logların diskler üzerinde doluluğa neden olduğuna şahit olmuşsunuzdur. Bu bir müddet sonra can sıkıcı bir hal alır ve otomatize edilme gereksinimi ortaya çıkar. işte bu ihtiyaçtan dolayı aşağıdaki scripti sizler ile de paylaşma ihtiyacı duydum.
Script özetle şunu yapar; belirttiğin bir klasörün içerisindeki girilen günden eski olan tüm dosyaları bir tek zip dosyası içerisinde ekleyerek sıkıştırır. Ardından sıkıştırdığı log dosyasını siler. Ardından arsivfolder olarak belirtilen hedefe taşır.
PS: bu script içerisinde powershell v5 ile gelen compress-archive fonksiyonu kullanılmıştır. Bundan dolayı mevcut ortamdaki powershell 5.0 yüklü değilse bu script çalışmayacaktır.
https://www.microsoft.com/en-us/download/details.aspx?id=54616
yukarıdaki linkten powershell versiyonunu güncel sürüme çekebilirisinz.
$LogFolder=“C:\sil”
$ArsivFolder=”\\10.0.23.23\LogArsiv”
$hepsi=Get-ChildItem $LogFolder |Where-Object {$_.LastWriteTime -le (Get-Date).AddDays(-20).ToString(“MM/dd/yyyy”)}
foreach ($biri in $hepsi)
{
$FullName=$biri.Name
$hedefpath=Get-Date -Format D
Compress-Archive -Path $LogFolder\$FullName -Update -DestinationPath “$LogFolder\$hedefpath.zip”
Remove-Item $LogFolder\$FullName
}
Move-Item $LogFolder\$hedefpath.zip $ArsivFolder