๐งน Windows ๋ก๊ทธ ํ์ผ ์๋ ์ญ์ ์ค์ผ์ค ์ค์ ๊ฐ์ด๋
๐ ๊ฐ์
์ด์ ํ๊ฒฝ์์ ๋ก๊ทธ ํ์ผ์ด ๊ณ์ ์์ด๋ฉด ๋์คํฌ ์ฉ๋์ ์๋ฐํ๊ฒ ๋ฉ๋๋ค. ์ด ๋ฌธ์๋ PowerShell ์คํฌ๋ฆฝํธ์ ์์ ์ค์ผ์ค๋ฌ(Task Scheduler) ๋ฅผ ํ์ฉํ์ฌ ์ง์ ๋ ๊ธฐ๊ฐ๋ณด๋ค ์ค๋๋ ๋ก๊ทธ ํ์ผ์ ์๋์ผ๋ก ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค.
โ๏ธ 1. PowerShell ์คํฌ๋ฆฝํธ ์์ฑ
๋จผ์ , C:\scripts\cleanup_logs.ps1 ํ์ผ์ ์์ฑํ๊ณ ์๋ ๋ด์ฉ์ ์์ฑํฉ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# C:\scripts\cleanup_logs.ps1
# ์ค๋๋ ๋ก๊ทธ ํ์ผ ์๋ ์ญ์ ์คํฌ๋ฆฝํธ
# ๋ก๊ทธ ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก ์ค์
$logPath = "C:\logs"
# ์ญ์ ๊ธฐ์ค (๋ฉฐ์น ์ด์ ์ง๋ ํ์ผ ์ญ์ )
$days = 30
# ๋์ ํ์ผ ํ์ฅ์
$filter = "*.log"
# ์ญ์ ์ํ
Get-ChildItem -Path $logPath -Filter $filter -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$days) } |
Remove-Item -Force
Write-Host "[$(Get-Date)] $days์ผ ์ด์ ๋ ๋ก๊ทธ ํ์ผ ์ญ์ ์๋ฃ."
๐ก
-Recurse์ต์ ์ ์ ๊ฑฐํ๋ฉด ํ์ ํด๋๋ ์ ์ธ๋ฉ๋๋ค.
๐งช 2. ์คํฌ๋ฆฝํธ ํ ์คํธ
PowerShell์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํํ ํ ์๋ ๋ช ๋ น์ ์ ๋ ฅํ์ฌ ์ ์ ๋์์ ํ์ธํฉ๋๋ค.
1
powershell -ExecutionPolicy Bypass -File "C:\scripts\cleanup_logs.ps1"
์คํ ํ C:\logs ๊ฒฝ๋ก์ ์ค๋๋ ๋ก๊ทธ ํ์ผ์ด ์ญ์ ๋์๋์ง ํ์ธํฉ๋๋ค.
โฐ 3. Windows ์์ ์ค์ผ์ค๋ฌ ๋ฑ๋ก
์๋ ์คํ์ ์ํด ์์ ์ค์ผ์ค๋ฌ(Task Scheduler) ๋ฅผ ์ค์ ํฉ๋๋ค.
- ์์
์ค์ผ์ค๋ฌ ์คํ
Win + Rโtaskschd.msc์ ๋ ฅ - ์์ ๋ง๋ค๊ธฐ(Create Task) ํด๋ฆญ
์ผ๋ฐ ํญ
- ์ด๋ฆ:
Delete Old Log Files - ๊ถํ: โ๊ฐ์ฅ ๋์ ๊ถํ์ผ๋ก ์คํโ
- ์ด๋ฆ:
ํธ๋ฆฌ๊ฑฐ(Triggers) ํญ
- ์๋ก ๋ง๋ค๊ธฐ โ ์คํ ์ฃผ๊ธฐ ์ ํ (๋งค์ผ, ๋งค์ฃผ ๋ฑ)
๋์(Actions) ํญ
์๋ก ๋ง๋ค๊ธฐ
- ํ๋ก๊ทธ๋จ/์คํฌ๋ฆฝํธ:
powershell.exe ์ธ์ ์ถ๊ฐ:
1
-ExecutionPolicy Bypass -File "C:\scripts\cleanup_logs.ps1"
- ํ๋ก๊ทธ๋จ/์คํฌ๋ฆฝํธ:
์กฐ๊ฑด(Conditions) / ์ค์ (Settings)
- ํ์ ์ โAC ์ ์์์๋ง ์คํโ ์ต์ ํด์
๐ 4. ์คํ ํ์ธ
์์ ์ค์ผ์ค๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ฑํ ์์ ์ ์ ํ ํ ์ฐํด๋ฆญ โ ์คํ(Run) ์ ๋๋ฌ ์๋ ์คํ ํ ์คํธ๋ฅผ ํฉ๋๋ค.
PowerShell ์ฐฝ์์ โ์ญ์ ์๋ฃโ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ์ ์์ ๋๋ค.
๐ชต 5. (์ ํ) ์ญ์ ๋ก๊ทธ ๊ธฐ๋ก ๋จ๊ธฐ๊ธฐ
์ญ์ ๋ด์ญ์ ํ ์คํธ ํ์ผ๋ก ๋จ๊ธฐ๋ ค๋ฉด ์คํฌ๋ฆฝํธ ๋ง์ง๋ง์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค:
1
"$((Get-Date).ToString('yyyy-MM-dd HH:mm:ss')) - Deleted old log files" | Out-File "C:\scripts\cleanup_logs_history.txt" -Append
โ ์์ฝ
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก | C:\scripts\cleanup_logs.ps1 |
| ๋ก๊ทธ ๊ฒฝ๋ก | C:\logs |
| ์ญ์ ๊ธฐ์ค | 30์ผ ์ด์ ์ง๋ .log ํ์ผ |
| ์คํ ์ฃผ๊ธฐ | ์์ ์ค์ผ์ค๋ฌ์์ ์์ ๋กญ๊ฒ ์ค์ |
| ์คํ ๋ช ๋ น | powershell -ExecutionPolicy Bypass -File "C:\scripts\cleanup_logs.ps1" |
๐ก ์ฐธ๊ณ ํ
์ฌ๋ฌ ๊ฒฝ๋ก๋ฅผ ๊ด๋ฆฌํด์ผ ํ๋ค๋ฉด
$logPath๋ฅผ ๋ฐฐ์ด๋ก ์ง์ ํ์ฌ ๋ฐ๋ณต ์ฒ๋ฆฌ ๊ฐ๋ฅ1 2 3 4 5 6
$paths = @("C:\logs", "D:\service\logs") foreach ($path in $paths) { Get-ChildItem -Path $path -Filter "*.log" -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-Item -Force }
.batํ์ผ๋ก ๋ํํ์ฌ ๋ค๋ฅธ ์์คํ ์์๋ ์ฝ๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅ