Powershell과 7zip을 이용해서 폴더 자동 압축하기

왜 하는가

개발 프로젝트를 AWS의 Elastic Beanstalk로 배포하고 있습니다. 앱을 압축파일 형태로 제출하므로, 새로운 빌드를 배포할 때 마다 프로젝트 폴더를 압축해야 합니다.

Elastic Beanstalk를 통해 앱을 생성하면 EC2 인스턴스를 자동으로 생성해주고 Load Balancer와 Auto Scaling을 쉽게 설정할 수 있습니다. 새로운 버전의 앱을 배포할 때에도 터미널이나 sftp 접속 없이 AWS콘솔을 통해 자동으로 배포할 수 있는 장점이 있습니다.

Elastic Beanstalk에서는 압축파일명이 앱의 버전으로 설정되므로, 파일명을 매번 변경하여 업로드해야 합니다. 이를 수동으로 처리할 경우 아래 단계를 거칩니다.

  • 프로젝트 폴더 우클릭 > 압축
  • 압축파일 우클릭 > 이름변경 > 현재 시간으로 파일이름 변경

현재 시간을 확인하고 이름을 변경하는 게 여간 귀찮은 일이 아닙니다. 배포가 잦은 편이므로 이를 자동화 할 필요를 느꼈습니다.

Powershell 스크립트를 이용하면 폴더를 압축하는 과정을 자동화 할 수 있습니다.

먼저 해야 할 작업

  • 압축을 위해 7zip을 설치합니다.
  • Windows의 보안정책 상 ps1 스크립트가 바로 실행 되지 않는다면 해당 정책을 변경해야 합니다.

자동압축 스크립트

if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"

cd C:\gitRepo\[프로젝트 폴더 경로]
$datetime = (Get-Date).ToString('yyyyMMdd_HHmmss')
sz u ../[프로젝트 이름]_$datetime.zip *

폴더 경로와 프로젝트 이름은 적당하게 변경하시고 .ps1 확장자로 저장하세요.

이제 ps1 파일을 더블클릭 하면 날짜가 포함된 파일명으로 폴더가 자동 압축됩니다.

아 행복해

귀찮은 압축 작업으로부터 해방되세요!

0
👍
0
❤️
0
😄
0
😝
0
😢
0
😡