본문 바로가기
카테고리 없음

파워쉘 설정 사용 방법, PowerShell Compress-Archive 완벽 활용법: zip 압축 파일 생성과 실무 자동화 가이드

2025. 8. 2.

Windows 시스템 관리나 개발 업무를 하다 보면 수많은 파일들을 압축해야 할 상황이 자주 발생합니다. 매번 외부 압축 프로그램을 열어서 작업하는 것이 번거롭다면, PowerShell의 내장 기능만으로도 충분히 효율적인 압축 작업이 가능하다는 사실을 아시나요?

PowerShell 5.0에서 도입된 Compress-Archive 명령어는 별도의 추가 소프트웨어 설치 없이도 강력한 압축 기능을 제공하며, 자동화 스크립트와 결합하면 업무 효율성을 크게 향상시킬 수 있습니다.

🚀 PowerShell 환경 설정과 시작 방법

다양한 PowerShell 실행 방식

PowerShell을 활용하기 위한 첫 번째 단계는 적절한 실행 방법을 선택하는 것입니다. Windows 환경에서는 여러 가지 방식으로 PowerShell에 접근할 수 있습니다.

가장 간편한 방법은 시작 메뉴 활용입니다. Windows 키를 누른 후 PowerShell을 검색하여 Windows PowerShell을 선택하면 됩니다. 빠른 실행을 원한다면 Windows 키와 R을 동시에 눌러 실행 대화상자를 열고 powershell을 입력하는 방법도 있습니다.

특정 폴더에서 바로 작업하고 싶을 때는 파일 탐색기에서 해당 폴더로 이동한 후 Shift 키를 누른 상태에서 우클릭하여 "여기서 PowerShell 창 열기"를 선택하면 편리합니다. 이 방법은 현재 위치를 기준으로 작업할 때 경로 입력의 번거로움을 줄여줍니다.

관리자 권한이 필요한 작업의 경우 Windows PowerShell(관리자)를 선택하거나, 일반 PowerShell 실행 시 Ctrl + Shift + Enter를 함께 누르면 관리자 권한으로 실행됩니다.

환경 확인 및 호환성

작업을 시작하기 전에 PowerShell 버전을 확인하는 것이 중요합니다. $PSVersionTable.PSVersion 명령어로 현재 버전을 확인할 수 있으며, Windows 10과 11에서는 기본적으로 PowerShell 5.0 이상이 설치되어 있습니다. PowerShell Core 6.0 이상을 사용하는 경우 크로스 플랫폼 지원이 가능하여 Linux나 macOS에서도 동일한 명령어를 사용할 수 있습니다.

📁 Compress-Archive 기본 사용법과 핵심 기능

단일 파일과 폴더 압축의 기초

Compress-Archive 명령어의 가장 기본적인 사용 방법은 단일 파일이나 폴더를 압축하는 것입니다. 단일 파일을 압축할 때는 -Path 매개변수에 파일 경로를, -DestinationPath 매개변수에 생성할 zip 파일의 경로를 지정합니다.

Compress-Archive -Path "C:\temp\example.txt" -DestinationPath "C:\temp\example.zip"

 

폴더 전체를 압축하는 경우에도 동일한 구조를 사용하며, 지정한 폴더 내의 모든 하위 파일과 폴더가 자동으로 포함됩니다.

Compress-Archive -Path "C:\temp\MyFolder" -DestinationPath "C:\temp\MyFolder.zip"

 

와일드카드를 활용한 유연한 압축도 가능합니다. 현재 디렉토리의 모든 파일을 압축하려면 .\* 패턴을 사용하면 됩니다.

복수 파일 처리와 고급 선택 기법

실무에서는 여러 파일을 선별적으로 압축해야 하는 경우가 많습니다. PowerShell에서는 배열을 이용하여 다중 파일을 효율적으로 처리할 수 있습니다.

$files = @(
    "C:\temp\file1.txt",
    "C:\temp\file2.txt", 
    "C:\temp\subfolder"
)
Compress-Archive -Path $files -DestinationPath "C:\temp\multiple.zip"

 

파이프라인을 활용한 동적 파일 선택은 PowerShell의 강력한 기능 중 하나입니다. Get-ChildItem과 결합하여 특정 조건에 맞는 파일들만 선택적으로 압축할 수 있습니다.

Get-ChildItem "C:\temp\*.log" | Compress-Archive -DestinationPath "C:\temp\logs.zip"

 

특정 확장자를 가진 파일들을 대상으로 할 때는 여러 패턴을 동시에 지정할 수도 있습니다.

⚙️ 고급 옵션과 실무 최적화 전략

압축 레벨 조정으로 성능 최적화

Compress-Archive의 -CompressionLevel 매개변수는 압축률과 처리 속도 간의 균형을 조정할 수 있는 중요한 옵션입니다. 세 가지 옵션이 제공되며, 각각은 서로 다른 용도에 최적화되어 있습니다.

Optimal 레벨은 최대 압축률을 제공하여 저장 공간을 가장 효율적으로 활용합니다. 백업이나 장기 보관용 압축 파일을 생성할 때 권장됩니다.

Compress-Archive -Path "C:\temp\data" -DestinationPath "C:\temp\data_optimal.zip" -CompressionLevel Optimal

 

Fastest 레벨은 압축 속도를 우선시하여 빠른 처리가 필요한 상황에 적합합니다. 임시 백업이나 대용량 파일의 신속한 전송을 위한 압축에 유용합니다.

NoCompression 레벨은 압축 없이 단순히 파일들을 하나의 아카이브로 묶는 기능만 제공합니다. 이미 압축된 파일들을 다시 압축할 때나 압축으로 인한 성능 저하를 피하고 싶을 때 활용할 수 있습니다.

파일 업데이트와 관리 기능

-Update 매개변수를 사용하면 기존 압축 파일에 새로운 파일을 추가하거나 변경된 파일을 업데이트할 수 있습니다. 이 기능은 점진적 백업이나 버전 관리에 매우 유용합니다.

Compress-Archive -Path "C:\temp\newfile.txt" -DestinationPath "C:\temp\existing.zip" -Update

 

-Force 매개변수는 기존 압축 파일이 존재할 때 강제로 덮어쓰기를 수행합니다. 자동화 스크립트에서 오류 없이 실행을 보장하고 싶을 때 필수적인 옵션입니다.

조건부 압축과 스마트 필터링

실무에서는 모든 파일을 무조건 압축하는 것이 아니라, 특정 조건에 맞는 파일들만 선별적으로 처리해야 하는 경우가 많습니다. PowerShell의 Where-Object를 활용하면 다양한 조건으로 파일을 필터링할 수 있습니다.

파일 크기를 기준으로 한 필터링은 대용량 파일만 별도로 관리하거나 작은 파일들을 제외하고 싶을 때 유용합니다:

Get-ChildItem "C:\temp" -Recurse | Where-Object {$_.Length -gt 1MB} | Compress-Archive -DestinationPath "C:\temp\large_files.zip"

 

날짜 기반 필터링을 통해 최근 수정된 파일들만 백업하는 것도 가능합니다:

$cutoffDate = (Get-Date).AddDays(-7)
Get-ChildItem "C:\temp" -Recurse | Where-Object {$_.LastWriteTime -gt $cutoffDate} | Compress-Archive -DestinationPath "C:\temp\recent_files.zip"

🔧 실무 자동화 스크립트와 활용 사례

로그 파일 관리 자동화

시스템 관리에서 가장 흔한 작업 중 하나인 로그 파일 백업을 자동화하는 스크립트입니다. 날짜별로 구분하여 압축함으로써 체계적인 로그 관리가 가능합니다.

$date = Get-Date -Format "yyyy-MM-dd"
Compress-Archive -Path "C:\logs\*.log" -DestinationPath "C:\backup\logs_$date.zip" -CompressionLevel Optimal

 

프로젝트 배포 패키지 생성

개발 환경에서는 소스코드에서 불필요한 파일들을 제외하고 배포용 패키지를 생성해야 하는 경우가 많습니다. 특정 패턴의 파일들을 제외하는 스크립트를 작성하여 깔끔한 배포 패키지를 만들 수 있습니다.

Get-ChildItem "C:\project" -Recurse | Where-Object {
    $_.FullName -notlike "*\temp\*" -and $_.Extension -ne ".log"
} | Compress-Archive -DestinationPath "C:\project_clean.zip"

 

이러한 자동화 스크립트들은 Windows 작업 스케줄러와 연동하여 정기적으로 실행되도록 설정할 수 있으며, 이를 통해 수동 작업의 부담을 크게 줄일 수 있습니다.

PowerShell의 Compress-Archive는 단순한 압축 도구를 넘어 시스템 관리와 개발 업무의 효율성을 크게 향상시킬 수 있는 강력한 기능입니다. 기본적인 파일 압축부터 복잡한 조건부 필터링, 그리고 완전 자동화된 백업 솔루션까지 다양한 범위의 작업을 처리할 수 있습니다.

특히 시스템 관리자나 개발자에게는 일상 업무의 생산성을 높이는 필수 도구로 활용될 수 있으며, 한번 익혀두면 다양한 상황에서 유용하게 사용할 수 있는 실용적인 기술입니다.





파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음