ZIP 파일 형식은 여러 파일을 하나의 파일로 압축해 크기를 줄여주는 형식입니다. 이 과정은 디스크 공간을 절약하고, 데이터를 암호화하며, 다른 사람과 파일을 손쉽게 공유할 수 있게 해줍니다. 이번 글에서는 Windows 11/10에서 PowerShell 유틸리티를 사용해 파일을 압축(zip)하고 압축 해제(unzip)하는 방법을 자세히 살펴보겠습니다.
PowerShell로 파일 압축하기
파일을 ZIP 아카이브로 압축하려면 Compress-Archive cmdlet을 사용합니다. 이 cmdlet은 압축할 파일의 경로를 입력받아(여러 파일은 쉼표로 구분) 지정한 대상 위치에 아카이브를 생성합니다.
다음 단계를 따라 해보세요.
Windows 키 + X를 눌러 고급 사용자 메뉴(Power User Menu)를 열고, 키보드에서 I를 눌러 PowerShell을 실행합니다.
그다음 아래 구문을 입력하고, <PathToFiles>와 <PathToDestination> 자리 표시자를 각각 압축하려는 파일의 경로, 저장할 폴더와 파일 이름으로 바꿔줍니다.
Compress-Archive -LiteralPath <PathToFiles> -DestinationPath <PathToDestination>

참고: 대상 경로를 지정할 때는 반드시 아카이브 파일 이름을 함께 입력해야 합니다. 그렇지 않으면 PowerShell이 지정한 위치에 ".zip"이라는 이름으로 저장합니다. 또한 파일 경로에 공백이 포함된 경우에만 경로 주위에 따옴표가 필요하다는 점도 기억해 두세요.
폴더 전체와 하위 폴더까지 한 번에 압축하려면 위와 동일한 구문을 사용하되, 개별 파일 대신 해당 디렉터리의 경로를 지정하면 됩니다.
실행 결과는 아래 이미지와 같습니다.

이 명령은 개별 파일을 일일이 지정하지 않고 여러 파일과 폴더가 들어 있는 디렉터리 경로를 통째로 넘깁니다. PowerShell은 루트 디렉터리 안의 모든 내용을 하위 폴더까지 포함해 압축합니다.
함께 읽기: .TAR.GZ, .TGZ 또는 .GZ 파일을 열어보는 방법
와일드카드 문자(*) 활용하기
Compress-Archive cmdlet은 와일드카드 문자(*)를 지원해 기능을 더욱 확장할 수 있습니다. 와일드카드를 사용하면 루트 디렉터리를 제외하거나, 특정 폴더의 파일만 압축하거나, 특정 유형의 파일만 골라서 압축할 수 있습니다. 단, 와일드카드를 사용하려면 -LiteralPath 매개변수가 이를 허용하지 않으므로 반드시 -Path 매개변수를 사용해야 합니다.
앞선 예제에서는 루트 디렉터리와 그 안의 모든 파일·하위 디렉터리를 포함해 아카이브를 만들었습니다. 하지만 ZIP 파일에서 루트 폴더 자체를 제외하고 싶다면 와일드카드를 활용할 수 있습니다. 파일 경로 끝에 별표(*)를 추가하면 PowerShell은 루트 디렉터리 안의 내용만 가져옵니다. 올바른 구문은 아래와 같습니다.
Compress-Archive -Path C:\path\to\file\* -DestinationPath C:\path\to\archive.zip

폴더 안에 다양한 파일 형식(.docx, .txt, .jpg 등)이 섞여 있고 특정 형식의 파일만 압축하고 싶다면 아래 구문을 사용하세요. PowerShell은 지정된 파일만 아카이브에 담고 나머지는 건드리지 않습니다. 단, 이 방법에서는 하위 디렉터리와 루트 폴더의 파일은 아카이브에 포함되지 않습니다.
Compress-Archive -Path C:\path\to\file\*.docx -DestinationPath C:\path\to\archive.zip

마지막으로, 루트 디렉터리와 모든 하위 디렉터리에 있는 파일만 압축하고 싶다면 별표-점-별표(*.*) 와일드카드를 사용해 아래 구문대로 압축하면 됩니다. 이 방법 역시 하위 디렉터리와 루트 폴더의 파일은 아카이브에 포함되지 않습니다.
Compress-Archive -Path C:\path\to\file\*.* -DestinationPath C:\path\to\archive.zip

또한 아카이브 생성이 끝난 후에도 -Update 매개변수를 사용해 기존 ZIP 파일을 업데이트할 수 있습니다. 아래 구문처럼 사용하면, 같은 이름을 가진 최신 버전의 파일로 기존 파일을 교체하거나 루트 디렉터리에 새로 생성된 파일을 추가할 수 있습니다.
Compress-Archive -Path C:\path\to\files -Update -DestinationPath C:\path\to\archive.zip

지금까지 Windows 10에서 PowerShell로 파일을 압축할 수 있는 다양한 시나리오를 살펴봤습니다. 이어서 PowerShell로 파일의 압축을 해제하는 방법을 알아보겠습니다.
함께 읽기: Windows 11/10에 CURL 설치하는 방법
PowerShell로 파일 압축 해제하기
앞서 확인했듯이 PowerShell로 파일을 압축할 수 있습니다. 이 유틸리티는 아카이브의 압축을 해제하는 기능도 제공합니다. 압축 해제는 압축보다 훨씬 간단합니다. 압축을 풀 원본 파일과 데이터를 저장할 대상 위치만 준비하면 됩니다.
그럼 바로 시작해 보겠습니다.
PowerShell로 파일의 압축을 해제하려면 다음을 수행합니다.
PowerShell을 엽니다.
그다음 아래 구문을 입력하고, <PathToZipFile>과 <PathToDestination> 자리 표시자를 각각 압축을 풀 ZIP 파일의 경로, 저장할 폴더와 이름으로 바꿔줍니다.
Expand-Archive -LiteralPath <PathToZipFile> -DestinationPath <PathToDestination>

압축 해제 대상으로 지정한 폴더에 아카이브의 내용물이 채워집니다. 압축 해제 전에 해당 폴더가 존재하지 않았다면, PowerShell이 폴더를 새로 만든 뒤 그 안에 내용물을 저장합니다.
기본적으로 -DestinationPath 매개변수를 생략하면 PowerShell은 현재 루트 디렉터리에 압축을 풀고, ZIP 파일의 이름을 따서 새 폴더를 생성합니다.
이 예제에서는 명령에 Docs 폴더를 지정했으므로, PowerShell은 C:\Users\Chidum.Osobalu 경로에 Docs 폴더를 만들고 아카이브의 파일들을 그 폴더에 추출합니다. 아래는 이 글 초반에 압축했던 두 파일이 들어 있는 출력 폴더의 모습입니다.

단, 대상 위치에 Docs 폴더가 이미 존재한다면 PowerShell은 압축 해제를 시도할 때 오류를 반환합니다. 이때 -Force 매개변수를 사용하면 기존 데이터를 새 데이터로 덮어쓰도록 강제할 수 있습니다.
다만 -Force 매개변수는 컴퓨터의 기존 파일을 되돌릴 수 없이 교체하므로, 예전 파일이 더 이상 필요 없는 경우에만 사용해야 합니다.
지금까지 Windows 11/10에서 PowerShell 유틸리티로 파일을 압축하고 압축 해제하는 방법을 알아봤습니다!