搜尋此網誌

2024年7月8日 星期一

Windows CMD IIS Log 的搬運與清除

緣起:


    不久前發生一件事,正式機站台的 C 槽快沒容量,大部份的容量都是被 IIS 的 Log 給佔走,因為合約有說要保留至少半年的 Log。有些流量大的站台,一天就會產生 200 多 MB 的 log txt 檔,每個站台的 log 檔加總起來,可以到 40 GB,非常的可怕。

    PM 有指定我幫忙處理這件事,資深的工程師也有教我怎麼下指令來處理這件事。紀錄下來,到時再碰上就可以直接 copy 來用。


搬運 log 到 D 槽:


    這邊是用 XCOPY 這個指令來做,那時下的指令長這樣

XCOPY C:\inetpub\logs\LogFiles  D:\{備份log資料夾} /D:01-01-2024/K/E/Y/C/I/H

    沒意外的話,iis 的 log 基本上都是放在 C:\inetpub\logs\LogFiles 裡,xcopy 的參數可以到官網查看,比較重要的是那個 /D,可以指定抓某日期變動後的檔案,格式是 /D:{MM-dd-yyyy}。

    下好指令後就可以等它 copy,我那時在 copy 時還碰上 D 槽容量不夠的情況,所以只能先把以前備份的 log 壓縮檔給移除來騰出空間,它們主機的 C 槽跟 D 槽都只有 100 G 左右,超小的。

    複製完後,還有一個指令要執行,它的目地是要把空資料夾給砍掉
@echo off
for /f "delims=" %%a in ('dir /ad /b /s D:\{備份log資料夾}^|sort /r') do (
   rd "%%a">nul 2>nul &&echo 空目錄"%%a"成功刪除!
)

    log 檔搬運完後,就可以接著處理 C 槽原本的 log 檔,我們是把 30 天後的 log 給砍了。

    

用 Forfiles 清除 30 天後的 log:


    我寫文章的當下才發現,之前就有寫過跟它有關的文章,挖,記憶退化了。我同事是給我看這篇文章,直接 copy 程式碼,下

forfiles /p C:\inetpub\logs\LogFiles /s /m *.log /d –30 /c "cmd /c del @path"

    然後等它處理完就 ok 了。

沒有留言:

張貼留言