시스템 관리자나 개발자라면 로그 파일이 시간이 지남에 따라 어떻게 쌓여가는지 잘 알고 계실 겁니다. 이러한 로그 파일을 수동으로 정리하는 것은 지루하고 시간 소모적인 작업입니다. 하지만 Windows 환경에서 간단한 BAT(배치) 파일을 활용하면 이 과정을 자동화할 수 있습니다. 이 글에서는 BAT 파일을 작성하여 로그 파일을 효율적으로 정리하고 관리하는 방법을 상세히 알아보겠습니다.
💡 TIP: BAT 파일은 단 몇 줄의 코드로 반복적인 파일 관리 작업을 자동화할 수 있어 시스템 관리자의 시간을 크게 절약해줍니다!
🔍 BAT 파일이란?
BAT 파일은 Windows 운영 체제에서 사용되는 배치 파일로, 일련의 명령어를 순차적으로 실행할 수 있게 해주는 스크립트 파일입니다. 확장자는 .bat 또는 .cmd를 사용합니다.
🌟 BAT 파일의 주요 특징:
- 📝 메모장과 같은 텍스트 편집기로 쉽게 작성 가능
- 🔄 반복적인 작업을 자동화하는 데 효과적
- 🕒 작업 스케줄러와 함께 사용하여 정기적인 작업 예약 가능
- 💻 별도의 프로그래밍 지식 없이도 간단한 스크립트 작성 가능

BAT 파일은 기본적으로 Windows 명령 프롬프트에서 실행할 수 있는 명령어들을 순차적으로 나열한 것으로, 시스템 관리와 파일 작업을 자동화하는 데 이상적입니다. 로그 파일과 같이 정기적으로 관리해야 하는 파일의 경우, BAT 파일을 통해 쉽게 자동화할 수 있습니다.
🛠️ 로그 파일 정리를 위한 BAT 파일 만들기
로그 파일을 효과적으로 정리하는 BAT 파일을 만드는 과정을 단계별로 알아보겠습니다.
1️⃣ 기본 스크립트 작성하기
다음과 같은 단계로 간단한 로그 파일 정리 스크립트를 작성할 수 있습니다:
- 메모장이나 다른 텍스트 편집기를 엽니다.
- 필요한 명령어를 작성합니다.
- .bat 확장자로 저장합니다.
기본적인 로그 파일 정리 BAT 파일의 예시 코드입니다:
@echo off
rem 로그 파일 정리 스크립트
setlocal enabledelayedexpansion
rem 변수 설정
set LOGDIR=C:\logs
set ARCHIVEDIR=%LOGDIR%\archive
set DAYSTOKEEP=30
rem 아카이브 디렉터리가 없으면 생성
if not exist "%ARCHIVEDIR%" mkdir "%ARCHIVEDIR%"
rem 날짜 형식 설정 (YYYY-MM-DD)
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
set DATESTR=%%c-%%a-%%b
)
rem 30일이 지난 로그 파일을 아카이브로 이동
forfiles /p "%LOGDIR%" /s /m *.log /d -%DAYSTOKEEP% /c "cmd /c if not @path contains 'archive' move @path %ARCHIVEDIR%\@file_%DATESTR%.log"
rem 60일이 지난 아카이브 파일 삭제
forfiles /p "%ARCHIVEDIR%" /m *.log /d -60 /c "cmd /c del @path"
echo 로그 파일 정리가 완료되었습니다.
2️⃣ 스크립트 세부 사항 조정하기
위의 기본 스크립트는 다음과 같은 작업을 수행합니다:
🗂️ 로그 디렉터리 설정: 로그 파일이 저장된 디렉터리와 아카이브용 디렉터리를 지정합니다.
⏳ 보관 기간 설정: 현재 폴더에 유지할 로그 파일의 기간(일)을 설정합니다.
📁 아카이브 폴더 생성: 아카이브 폴더가 없는 경우 자동으로 생성합니다.
📅 날짜 형식 설정: 오늘 날짜를 YYYY-MM-DD 형식으로 가져옵니다.
🔄 파일 이동: 지정된 기간(예: 30일)보다 오래된 로그 파일을 아카이브 폴더로 이동합니다.
🗑️ 오래된 파일 삭제: 아카이브 폴더에서 특정 기간(예: 60일)이 지난 파일을 삭제합니다.

📊 주요 명령어 설명
BAT 파일에서 로그 파일 정리에 사용되는 주요 명령어들을 자세히 살펴보겠습니다.
@echo off
🔇 명령 실행 시 명령어 자체를 화면에 표시하지 않도록 합니다. 이를 통해 출력이 깔끔해집니다.
setlocal enabledelayedexpansion
🔄 변수의 지연 확장을 활성화합니다. 루프 내에서 변수 값이 변경될 때 유용합니다.
set VARIABLE=value
📝 변수에 값을 할당합니다. 로그 디렉터리, 아카이브 디렉터리, 보관 기간 등을 설정할 수 있습니다.
if not exist "path" mkdir "path"
📁 특정 디렉터리가 존재하지 않는 경우 새로 생성합니다.
for /f 명령어
🔄 텍스트 출력을 처리하는 루프를 만듭니다. 날짜 정보를 파싱하는 데 사용됩니다.
forfiles 명령어
🔍 조건에 맞는 파일을 찾아 특정 명령을 실행합니다. 다음과 같은 옵션이 있습니다:
- /p: 검색할 경로 지정
- /s: 하위 디렉터리 포함 검색
- /m: 검색할 파일 패턴 지정
- /d: 날짜 필터링 (-N은 N일 이전)
- /c: 실행할 명령어 지정
move 명령어
📦 파일을 한 위치에서 다른 위치로 이동합니다.
del 명령어
🗑️ 파일을 삭제합니다.
⏱️ 자동 실행 스케줄링하기
BAT 파일을 수동으로 실행하는 것도 가능하지만, Windows 작업 스케줄러를 사용하여 자동으로 실행되도록 설정하면 더욱 효율적입니다.
작업 스케줄러 설정 방법:
1️⃣ 작업 스케줄러 열기
- 시작 메뉴에서 '작업 스케줄러'를 검색하거나 taskschd.msc 명령을 실행합니다.
2️⃣ 새 작업 만들기
- 오른쪽 패널에서 '기본 작업 만들기'를 클릭합니다.
3️⃣ 작업 정보 입력
- 작업 이름과 설명을 입력합니다 (예: "로그 파일 정리").
4️⃣ 실행 주기 설정
- 일별, 주별, 월별 등의 옵션 중에서 원하는 주기를 선택합니다.
- 대부분의 로그 관리는 일별로 설정하는 것이 좋습니다.
5️⃣ BAT 파일 경로 지정
- '프로그램 시작' 작업을 선택하고 BAT 파일의 전체 경로를 입력합니다.
6️⃣ 완료
- 설정을 검토하고 '완료' 버튼을 클릭합니다.
작업 스케줄러 설정

💡 스케줄링 팁:
- 🕒 실행 시간 선택: 시스템 부하가 적은 시간(예: 새벽 2시)에 실행하도록 설정하는 것이 좋습니다.
- 🔄 반복 주기: 로그 생성 빈도와 중요도에 따라 일별, 주별 또는 월별로 설정합니다.
- 📊 실행 계정: 관리자 권한이 필요한 작업의 경우 적절한 권한을 가진 계정으로 실행되도록 설정합니다.
- 🔔 알림 설정: 작업 성공 또는 실패 시 이메일 알림을 받을 수 있도록 설정하면 모니터링에 도움이 됩니다.
🔄 실제 사용 사례
이제 로그 파일 정리를 위한 BAT 파일의 실제 사용 사례를 살펴보겠습니다.
사례 1: 웹 서버 로그 관리
웹 서버(예: IIS, Apache)는 방대한 양의 로그 파일을 생성합니다. 다음은 이러한 로그를 관리하는 BAT 파일 예시입니다:
@echo off
setlocal enabledelayedexpansion
rem 웹 서버 로그 디렉터리 설정
set LOGDIR=C:\inetpub\logs\LogFiles
set ARCHIVEDIR=D:\LogArchive\WebServer
set DAYSTOKEEP=14
rem 아카이브 디렉터리 생성
if not exist "%ARCHIVEDIR%" mkdir "%ARCHIVEDIR%"
rem 날짜 형식 설정
for /f "tokens=1-3 delims=/" %%a in ('echo %date%') do (
set DATESTR=%%c-%%a-%%b
)
rem 지정된 일수보다 오래된 로그 파일 압축 및 이동
forfiles /p "%LOGDIR%" /m *.log /d -%DAYSTOKEEP% /c "cmd /c echo 압축: @path && compact /c @path && move @path %ARCHIVEDIR%\@file_%DATESTR%.log"
rem 90일 이상 된 아카이브 파일 삭제
forfiles /p "%ARCHIVEDIR%" /m *.log /d -90 /c "cmd /c echo 삭제: @path && del @path"
echo 웹 서버 로그 정리가 완료되었습니다.
사례 2: 애플리케이션 로그 백업 및 정리
애플리케이션 로그를 백업하고 정리하는 예시입니다:
@echo off
setlocal enabledelayedexpansion
rem 애플리케이션 로그 디렉터리 설정
set APPLOGDIR=C:\Program Files\MyApp\logs
set BACKUPDIR=E:\Backups\AppLogs
set DAYSTOKEEP=7
rem 백업 디렉터리 생성
if not exist "%BACKUPDIR%" mkdir "%BACKUPDIR%"
rem 년-월-일 형식의 폴더 생성
for /f "tokens=1-3 delims=/" %%a in ('echo %date%') do (
set YEAR=%%c
set MONTH=%%a
set DAY=%%b
set DATEDIR=%BACKUPDIR%\%%c-%%a-%%b
)
rem 백업용 날짜 폴더 생성
if not exist "%DATEDIR%" mkdir "%DATEDIR%"
rem 모든 로그 파일을 날짜 폴더로 복사
xcopy /y "%APPLOGDIR%\*.log" "%DATEDIR%\"
rem 7일 이상 된 로그 파일 삭제
forfiles /p "%APPLOGDIR%" /m *.log /d -%DAYSTOKEEP% /c "cmd /c echo 삭제: @path && del @path"
rem 30일 이상 된 백업 폴더 삭제
forfiles /p "%BACKUPDIR%" /d -30 /c "cmd /c if @isdir==TRUE echo 폴더 삭제: @path && rd /s /q @path"
echo 애플리케이션 로그 백업 및 정리가 완료되었습니다.

❓ 자주 묻는 질문 (FAQ)
❓ BAT 파일 실행 시 '액세스가 거부되었습니다' 오류가 발생합니다.
💬 답변: 이 오류는 대개 권한 문제로 발생합니다. 다음과 같은 해결 방법을 시도해 보세요:
- BAT 파일을 관리자 권한으로 실행합니다 (우클릭 > '관리자 권한으로 실행').
- 작업 스케줄러에서 '가장 높은 권한으로 실행' 옵션을 선택합니다.
- 대상 파일 및 폴더에 대한 적절한 읽기/쓰기 권한이 있는지 확인합니다.
❓ 특정 로그 파일만 제외하고 싶습니다.
💬 답변: findstr 명령과 함께 파이프를 사용하거나, 조건문을 추가하여 특정 패턴의 파일을 제외할 수 있습니다:
forfiles /p "%LOGDIR%" /m *.log /d -%DAYSTOKEEP% /c "cmd /c if not @file contains \"important\" move @path %ARCHIVEDIR%\@file_%DATESTR%.log"
❓ 로그 파일을 삭제하기 전에 압축하고 싶습니다.
💬 답변: PowerShell 명령이나 외부 도구를 사용하여 압축할 수 있습니다. 예시:
rem PowerShell을 사용한 압축
powershell -command "Compress-Archive -Path '%LOGDIR%\*.log' -DestinationPath '%ARCHIVEDIR%\logs_%DATESTR%.zip'"
rem 압축 후 원본 파일 삭제
forfiles /p "%LOGDIR%" /m *.log /d -%DAYSTOKEEP% /c "cmd /c del @path"
❓ 로그 파일 정리 작업의 성공 여부를 알고 싶습니다.
💬 답변: 작업 결과를 로그 파일에 기록하고, 오류 발생 시 이메일 알림을 보내도록 설정할 수 있습니다:
@echo off
echo 로그 정리 작업 시작: %date% %time% > "%LOGDIR%\cleanup_log.txt"
rem 로그 정리 작업 수행
if errorlevel 1 (
echo 오류 발생: %errorlevel% >> "%LOGDIR%\cleanup_log.txt"
rem 이메일 알림 (외부 도구 필요)
blat -to admin@example.com -subject "로그 정리 오류" -body "로그 정리 중 오류가 발생했습니다."
) else (
echo 작업 완료: 성공 >> "%LOGDIR%\cleanup_log.txt"
)
echo 로그 정리 작업 종료: %date% %time% >> "%LOGDIR%\cleanup_log.txt"
❓ 매우 큰 로그 파일(1GB 이상)을 처리할 때 성능 문제가 있습니다.
💬 답변: 대용량 파일을 처리할 때는 다음과 같은 방법을 고려해 보세요:
- 로그 순환 주기를 짧게 조정하여 파일이 너무 커지지 않도록 합니다.
- 백그라운드 작업으로 처리하거나 시스템 부하가 적은 시간에 실행하도록 스케줄링합니다.
- PowerShell이나 Python 같은 더 강력한 스크립팅 언어를 사용하는 것을 고려해 보세요.
📝 정리 및 결론
BAT 파일을 사용한 로그 파일 정리는 Windows 환경에서 시스템 관리자의 일상적인 작업을 자동화하는 효과적인 방법입니다. 이 글에서 살펴본 내용을 요약하면 다음과 같습니다:
🔹 BAT 파일의 장점:
- 간단한 문법으로 빠르게 스크립트 작성 가능
- 별도의 소프트웨어 설치 없이 Windows에서 바로 실행
- 작업 스케줄러와 연동하여 완전 자동화 가능
🔹 로그 관리 전략:
- 최신 로그는 빠른 접근을 위해 원본 위치에 유지
- 오래된 로그는 아카이브 폴더로 이동하여 저장 공간 관리
- 매우 오래된 로그는 자동으로 삭제하여 디스크 공간 확보
🔹 추가 고려사항:
- 중요한 로그는 삭제 전 반드시 백업
- 정기적으로 스크립트 실행 결과 확인
- 로그 순환 정책을 시스템 요구사항에 맞게 조정
💡 TIP: 처음에는 간단한 BAT 파일로 시작하고, 필요에 따라 기능을 추가하며 확장하세요. 복잡한 작업의 경우 PowerShell이나 Python과 같은 더 강력한 스크립팅 도구로 전환하는 것도 고려해 보세요!
로그 파일 정리 자동화는 시스템 관리의 기본적인 부분이지만, 이를 효과적으로 구현하면 시스템 안정성을 높이고 관리자의 시간을 절약할 수 있습니다. 이 글에서 제공한 예시와 팁을 활용하여 여러분의 환경에 맞는 최적의 로그 관리 솔루션을 구축하시기 바랍니다.
'지식 공유 > IT, 인공지능 정보' 카테고리의 다른 글
PDF 도면을 CAD 파일로 변환하는 완벽 가이드 (0) | 2025.05.20 |
---|---|
빠르고 편리하게 효율적인 자료 정리와 발표 준비 (2) | 2025.05.18 |
하나의 호스팅으로 여러 홈페이지 효율적으로 관리하기 (0) | 2025.05.13 |
Redis와 연동되는 n8n 워크플로우 엔진 설치하기 (0) | 2025.05.13 |
PDF 파일을 Claude 프로젝트에 활용하기 (0) | 2025.05.12 |