본문 바로가기
Windows

PowerShell 스크립트로 자동 백업하기

by 리요_ 2025. 1. 15.
반응형

PowerShell 스크립트로 자동 백업하기

특정 디렉토리의 파일을 압축하여 지정된 경로에 저장하는 기능을 수행할 PowerShell 스크립트를 만들어주었습니다.

 

전체 코드는 아래와 같습니다.

# 압축할 파일의 앞자리 명칭
$fileName_prefix= 'backup_liyo'
# 압축할 폴더 경로
$dirPath = 'D:\liyoFTP'
# 압축한 파일이 저장될 경로
$destinationPath= 'E:\backupLiyoFTP'


# =================================
# ### 구현 부분 ###
$dirYear = Get-Date -format "yyyy"
$dirMonth = Get-Date -format "MM"
$dt = Get-Date -format "yyyyMMdd_HHmmss"
$createPath = $destinationPath + "\" + $dirYear + "\" + $dirMonth
$createBackupPath = $destinationPath + "\" + $dirYear + "\" + $dirMonth + "\" + $fileName_prefix + "_" + $dt + ".zip"

if(Test-Path -Path $createPath) {
    Compress-Archive -Path $dirPath -DestinationPath $createBackupPath
} else {
    New-Item $createPath -ItemType Directory
    Compress-Archive -Path $dirPath -DestinationPath $createBackupPath
}

 

코드 해석

1. 파일명 접두사 설정

$fileName_profix= 'backup_liyoftp'

 

압축 파일의 접두사를 설정합니다. 

최종 파일 이름은 이 접두사와 날짜 및 시간을 기반으로 생성됩니다.

저는 FTP 서버 디렉토리를 압축하여 일자별로 저장해두려 합니다.


2. 압축할 폴더 경로

$dirPath = 'D:\liyoFTP'

 

압축할 파일들이 있는 폴더의 경로입니다. 

FTP 서버의 디렉토리 경로를 지정해 주었습니다.


3. 압축 파일 저장 경로

$destinationPath = 'E:\backupLiyoFTP'

 

압축된 파일이 저장될 경로를 설정해 줍니다.


4. 현재 날짜 및 시간 가져오기

$dirYear = Get-Date -format "yyyy"
$dirMonth = Get-Date -format "MM"
$dt = Get-Date -format "yyyyMMdd_HHmmss"

 

현재 연도, 월, 날짜 및 시간을 가져와서 변수에 저장합니다.

이를 통해 압축 파일 이름과 경로를 동적으로 생성합니다.


5. 저장할 경로 생성

$createPath = $destinationPath + "\" + $dirYear + "\" + $dirMonth
$createBackupPath = $destinationPath + "\" + $dirYear + "\" + $dirMonth + $fileName_prefix + "_" + ".zip"

 

압축파일이 저장될 완전한 경로를 생성합니다.

2번에서 설정했던 경로 안에 연도와 월 별 폴더를 생성하기 위한 설정입니다.


6. 압축 및 경로 생성

if(Test-Path -Path $createPath) {
	Compress-Archive -Path $dirPath -DestinationPath $createBackupPath
} else {
	New-Item $createPath -ItemType Directory
    Compress-Archive -Path $dirPath -DestinationPath $createBackupPath
}

 

지정된 경로가 이미 존재하는지 확인합니다.

존재하면 압축을 수행하고, 존재하지 않으면 새 폴더를 만들고 압축을 수행합니다.


사용 방법

1. PowerShell 실행

Windows 에서 PowerShell 을 실행합니다.

2. 스크립트 복사 및 불여 넣기

위 코드를 PowerShell 에 복사하여 붙여 넣습니다.

3. 경로 수정

$dirPath와 $destinationPath 변수를 시스템에 맞게 수정합니다.

압출할 폴더와 압축 하일을 저장할 경로를 저장합니다.

4. 스크립트 실행

스크립트를 실행하여 지정된 폴더의 파일을 압축합니다. 


주의사항

스크립트를 실행하기 전에 PowetShell의 실행 정책이 스크립트 실행을 허용하는지 확인해야 합니다.

압축할 폴더에 충분한 권한이 있어야 하며, 저장 경로에도 쓰기 권한이 있어야 합니다.


자동 실행 설정 방법

위의 방법으로는 스크립트를 직접 실행 시 해당 날짜 기준으로 지정된 경로로 압축을 진행합니다.

매일 자동으로 실행되도록 하기 위해 Windows의 작업 스케줄러를 사용해 줍니다.

1. 작업 스케줄러 열기

자동실행 설정 방법

Windows 검색에서 "작업 스케줄러" 를 입력하고 실행합니다.


2. 새 작업 만들기

우측 작업패널에서 "작업만들기" 를 선택합니다.


3. 일반 탭 설정

이름을 입력하고, 필요에 따라 설명을 추가합니다.

가장 높은 권한으로 실행을 선택합니다.


4. 트리거 탭 설정

 

상단의 트리거 탭을 클릭하고 새로 만들기를 선택합니다.

일정을 선택하고 매일 실행하도록 설정합니다. 필요에 따라 유동적으로 설정하면 됩니다.


5. 동작(작업) 탭 설정

동작 탭을 클릭하고 새로 만들기를 선택합니다.

프로그램/스크립트 필드에 powershell.exe 를 입력합니다.

인수추가 필드에 작성한 스크립트 파일을 작성해 줍니다.

프로그램/스크립트 같은 경우 우측의 찾아보기를 통해 powerShell의 경로에서 powershell.exe 를 선택해 주면 됩니다.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

 

제가 추가한 인수는 아래와 같습니다.

-ExecutionPolicy Unrestricted -File "E:\backup_ftpfile_day.ps1"

 


6. 조건 및 설정 탭 설정

필요에 따라 조건 및 설정을 조정합니다.


7. 작업 저장

모든 설정을 마친 후 확인 버튼을 눌러 작업을 저장합니다.


이제 설정한 시간에 매일 자동으로 PowerShell 스크립트가 실행되어 지정된 폴더를 압축하게 됩니다.

 

 

반응형