ZIP 파일 포맷은 여러 파일을 하나의 압축 파일로 묶어 파일 크기를 줄이는 데 사용됩니다. 이는 디스크 공간 절약, 데이터 암호화, 그리고 파일 공유를 용이하게 합니다. PowerShell을 활용하여 파일을 압축하고 압축을 해제하는 방법을 살펴보겠습니다.
PowerShell을 이용한 파일 압축 방법
먼저, Compress-Archive
cmdlet을 사용하여 파일을 ZIP 아카이브로 압축해 보겠습니다. 압축할 파일의 경로(여러 파일은 쉼표로 구분)와 압축 파일이 저장될 경로를 지정합니다.
PowerShell을 시작하려면 시작 메뉴에서 PowerShell을 검색하고 실행합니다. 다음 명령에서 <pathtofiles>
는 압축할 파일의 경로, <pathtodestination>
는 압축 파일이 저장될 위치 및 파일명으로 변경해야 합니다.
Compress-Archive -LiteralPath <pathtofiles> -DestinationPath <pathtodestination>
압축 파일의 이름을 지정하지 않으면 PowerShell은 지정된 위치에 “.zip” 확장자로 저장합니다.
참고: 파일 경로에 공백이 포함된 경우 따옴표를 사용하여 경로를 묶어야 합니다.
폴더의 전체 내용과 하위 폴더를 압축하려면 다음 명령을 사용합니다. <pathtofolder>
는 압축할 폴더의 경로, <pathtodestination>
는 압축 파일이 저장될 위치 및 파일명으로 변경해야 합니다.
Compress-Archive -LiteralPath <pathtofolder> -DestinationPath <pathtodestination>
이 예제에서는 개별 파일이 아닌 디렉토리 경로를 지정했습니다. PowerShell은 해당 디렉토리의 모든 내용과 하위 폴더를 압축합니다.
Compress-Archive
cmdlet은 와일드카드 문자도 지원하여 기능을 확장할 수 있습니다. 와일드카드를 사용할 때는 -LiteralPath
대신 -Path
매개변수를 사용해야 합니다.
Compress-Archive -Path C:pathtofile* -DestinationPath C:pathtoarchive.zip
위에서는 루트 디렉토리와 모든 파일 및 하위 디렉토리를 포함하는 방법으로 아카이브 파일을 생성했습니다. Zip 파일에서 루트 폴더를 제외하려면 와일드카드를 사용하여 아카이브에서 이를 생략할 수 있습니다. 파일 경로의 끝에 별표(*)를 추가합니다.
Compress-Archive -Path C:pathtofile*.jpg -DestinationPath C:pathtoarchive.zip
이렇게 하면 PowerShell은 루트 디렉토리 내부의 내용만 가져오게 됩니다.
만약 여러 파일 형식(.doc, .txt, .jpg 등)이 있는 폴더에서 특정 형식만 압축하고 싶다면, 다음과 같이 명령을 사용할 수 있습니다.
Compress-Archive -Path C:pathtofile*.* -DestinationPath C:pathtoarchive.zip
참고: 이 방법을 사용하면 루트 폴더의 하위 디렉터리와 파일은 아카이브에 포함되지 않습니다.
루트 디렉토리와 모든 하위 디렉토리의 파일만 압축하려면 *.*
와일드카드를 사용합니다.
Compress-Archive -Path C:pathtofiles -Update -DestinationPath C:pathtoarchive.zip
참고: 이 방법을 사용하면 루트 폴더의 하위 디렉터리 및 파일이 아카이브에 포함되지 않습니다.
-Update
매개변수를 사용하여 기존 압축 파일을 업데이트할 수도 있습니다. 이를 통해 아카이브 내의 동일한 이름의 파일을 새 버전으로 교체하고, 루트 디렉토리에 생성된 새 파일을 추가할 수 있습니다.
PowerShell을 사용하여 파일 압축을 푸는 방법. 압축뿐만 아니라, PowerShell은 압축된 아카이브를 해제하는 기능도 제공합니다. 압축 해제는 압축보다 간단하며, 압축 해제할 파일의 경로와 압축을 푼 파일이 저장될 경로만 필요합니다. PowerShell을 실행하고 다음 명령을 입력합니다.
Expand-Archive -LiteralPath <pathtozipfile> -DestinationPath <pathtodestination>
여기서 <pathtozipfile>
은 압축을 풀 ZIP 파일의 경로, <pathtodestination>
은 파일이 추출될 경로를 나타냅니다.
지정된 대상 폴더에는 아카이브 내용이 채워집니다. 만약 압축 해제하기 전에 해당 폴더가 없다면, PowerShell은 폴더를 생성하고 내용을 그 안에 넣습니다.
-DestinationPath
매개변수를 생략하면 PowerShell은 현재 디렉토리에 압축을 풀고, ZIP 파일 이름으로 된 새 폴더를 만듭니다.
이전 예에서 -DestinationPath
를 생략하면 PowerShell은 “C:Usersbrady” 경로에 “Archive” 폴더를 만들고 아카이브에서 파일을 추출합니다.
만약 대상 폴더가 이미 존재한다면, PowerShell은 파일 압축 해제를 시도할 때 오류를 반환합니다. 하지만 -Force
매개변수를 사용하여 기존 데이터를 덮어쓰도록 할 수 있습니다.
-Force
매개변수는 이전 파일이 더 이상 필요하지 않을 때만 사용해야 합니다. 이는 파일이 복구 불가능하게 변경될 수 있기 때문입니다.