본문 바로가기
내가 만든 것/스크립트 Scripts

[윈도우 Batch-Script, Powershell] 압축백업 배치 스크립트 (수정 2019-03-14)

by 언제나초심. 2015. 12. 30.
반응형

개요

주기적으로 압축해야 하는 폴더를 지정해서, 스케쥴에 등록해놓으시면 편합니다.


예전에 만든 batch 스크립트가 잘 동작이 안 되어서 (예전 환경이라면 잘 될 것으로 보입니다. 7z 을 이용하므로, 7z 설치가 필요합니다)


PowerShell 스크립트를 방금 만들어보았습니다.


내부에서 파일 경로 들을 설정하셔서 이용하시면 됩니다. 



윈도우 배치 파일 (PowerShell 이용)

설정할 값들

  $fmileName_prefix : 파일의 이름 앞부분에 올 명칭

  $dirPath : 압축할 경로

  $destinationPath : 압축한 파일이 저장될 경로



# =================
# 폴더 압축 백업 PowerShell Script
# Author : E2xist (e2xist.tistory.com)
# =================
# ### 설정 부분 ### 
# 압축할 파일의 앞자리 명칭
$fileName_prefix= 'test'
# 압축할 폴더 경로
$dirPath = 'D:\Dev\prismjs'
# 압축한 파일이 저장될 경로
$destinationPath = 'D:\Backups\'


# =================================
# ### 구현 부분 ###
$dt = Get-Date -format "yyyyMMdd_HHmmssffff"
Compress-Archive -Path $dirPath -DestinationPath ($destinationPath + $fileName_prefix + "." + $dt + ".zip")



윈도우 배치 파일 (예전 방식)

특정 폴더를 압축하기 위해 사용하는 배치파일 입니다. 


메모장으로 복사 한 후에 xxx.bat 식으로 bat 확장자로 저장하고, 클릭으로 동작하시면 됩니다. 


변경하실 부분은 세가지 입니다. 

   1) _MY_FOLDER 값은 압축할 폴더 경로 이고,

   2) _TO_FOLDER 값은 압축후에 옮겨질 폴더 경로 입니다. 

   3) FNAME 값은 압축파일 명입니다. 


이 배치파일은 7z 을 기준으로 동작하기 때문에, 반디집이나 7z 등이 설치가 되어있어서, 7z 명령어를 호출할 수 있는 환경이어야 작동이 됩니다. 



소스 코드

메모장으로 복사후 [파일명.bat] 으로 저장할 것.


@ECHO OFF
MODE CON COLS=60 LINES=11
COLOR 3F

REM 7z 을 필요로 합니다.

ECHO ======================================
ECHO 폴더 압축 백업 배치 파일
ECHO Author : e2xist (e2xist.tistory.com)
ECHO ======================================


REM From folder path
SET _MY_FOLDER=d:\test\abcd
REM to folder path
SET _TO_FOLDER=d:\test
REM compress file name 
SET FNAME=filename123

REM get _MY_DATETIME
CALL :SETDATETIME
SET FNAME="%FNAME%.%_MY_DATETIME%.zip"

REM 7z compress
7z a %_TO_FOLDER%\%FNAME% %_MY_FOLDER%

ECHO The proccess has been completed.
TIMEOUT /t 10


REM close
GOTO :EOF

REM =============================
REM functional
:SETDATETIME
SET _MY_DATE=%DATE%
REM  result ->2015-03-12
SET _MY_DATE=%_MY_DATE:-=%
REM  result ->20150312
SET _MY_TIME=%TIME%
REM  result -> 1:40:03.01
SET _MY_TIME=%_MY_TIME: =0%
REM  result ->  01:40:03.01
SET _MY_TIME=%_MY_TIME:~0,-3%
REM  result ->  01:40:03
SET _MY_TIME=%_MY_TIME::=%
REM  result ->  014003
SET _MY_DATETIME=%_MY_DATE%_%_MY_TIME%


git 에도 올려두었습니다.

https://github.com/exizt/compressFolderTo7z.bat


반응형