Disco pieno…troppi logs!!!

Standard

Ci risiamo, ieri mi contatta un collega e mi chiede se si può fare qualcosa per cancellare i logs nel nostro server. Okay loggare….ma inutile tenere file troppo vecchi, non ha senso.

Il concetto non è sbagliato ma, non è che voglio aggiungere un’attività manuale di questo tipo a “valore 0” alle cose che già vengono fatte “a manella”…bisogna automatizzare!

Quindi mi metto alla ricerca di una soluzione pratica, veloce e di facile attuazione ed ecco che vedo la luce in un semplice script di 2 sole righe di Powershell pubblicato in questo post:https://devblogs.microsoft.com/scripting/erase-files-based-on-date-by-using-powershell/

Il codice è il seguente

$Now=Get-Date

Get-Childitem D:\Syslog\*.log | Where-Object { $_.LastWriteTime –lt $Now.AddDays(-20) } | Remove-Item

Come funziona:

  • $Now=Get-Date: altro non fa che mettere la data di oggi [Get-Date] nella variabile $Now
  • Get-Chilitem D:\Syslog\*.log: prende in considerazione tutti i file con estensione .log all’interno della cartella d\:Syslog
  • | Where-Object { $_.LastWriteTime –lt $Now.AddDays(-20) } |: qui andiamo ad aggiungere la condizione, un filtro da applicare ai nostri file di log. Infatti vogliamo considerare solo quelli che hanno LastWriterTime più vecchio di 20 giorni (-20)
  • Remove-Item: una volta individuati i file che soddisfano il nostro filtro andiamo a cancellarli appunto con il comando Remove-Item.

CONSIGLIO: prima di procedere con la cancellazione -whatif al termine dello script, in questo modo:

$Now=Get-Date

Get-Childitem D:\Syslog\*.log | Where-Object { $_.LastWriteTime –lt $Now.AddDays(-20) } | Remove-Item –whatif

Ti permetterà di eseguire lo script senza cancellare i file, così avrai la possibilità di avere la lista che saranno impattati….senza rischiare niente.

Meglio non rischiare…😅

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *