회사나 개인 업무에 중요한 파일은 백업해두고 사용하는 것이 안전한데요. 실수로 삭제하거나 바이러스, 웨어의 공격을 받아 감염되어 파일을 사용하지 못하게 되는데요. 오늘은 작업 스케줄러, robocopy를 이용하여 윈도우 파일 백업 자동화하는 방법을 알아보겠습니다.
1. Robocopy 구문작성
Robocopy는 윈도우에서 기본 제공하는 강력한 복사 명령 유틸리티인데요. 파일, 디렉리, 드라이브 등을 빠르고 간편하게 복사할 수 있습니다. 명령 사용방법은 CMD(명령 프롬프트)를 실행하고 원본 파일 위치, 복사할 위치를 지정하여 옵션을 부여하면 파일을 복사할 수 있습니다.
1) Robocopy 구성 및 옵션
<기본 구성>
robocopy 원본위치 복사위치 /옵션 /옵션 /옵션.....
- /S : 하위 디렉터리를 복사하지만 빈 디렉터리는 복사하지 않습니다.
- /E : 빈 디렉터리를 포함하여 모든 하위 디렉터리를 복사합니다.
- /MIR : 디렉터리 전체를 동기화합니다.
- /XO : 오래된 파일을 제외하고 복사( 변경된 파일만 복사할 때 유용함)
- /Z : 재시작 가능 모드에서 파일을 복사합니다(네트워크 복사에 유용함).
- /R : 실패한 작업에 대한 재시도 횟수를 지정합니다.
- /W : 재시도 사이의 대기 시간을 초 단위로 지정합니다.
- /log : 작업내용을 로그 파일에 기록합니다(기존 로그를 덮어쓰기).
- /log+ : 작업내용을 로그 파일에 기록합니다(기존 로그에 추가).
2) 자동 복사를 위한 스크립트 작성
명령 프롬프트를 이용하여 하나씩 입력하여 robocopy를 실행하는 것은 힘든데요. 자동화를 위해 bat 파일과 vbs 파일의 스크립트를 작성해보겠습니다. bat 파일과 vbs 파일의 차이점은 자동으로 실행할 때 bat 파일은 cmd 창이 보이지만, vbs 파일은 백그라운드로 실행되어 보이지 않아 작업을 방해하지 않습니다.
(1) bat 스크립트
메모장을 실행하여 아래 구문을 붙여넣습니다. 아래 구문의 “원본폴더 위치”에는 복사하고 싶은 폴더의 경로를 입력하고 “복사할 위치”에는 백업할 폴더의 경로를 입력합니다. 입력을 마치면 “다른 이름으로 저장”을 클릭하고 이름을 지정하고 확장자는 .bat 로 지정합니다. 작성한 bat 파일은 C드라이브 안에 폴더를 만들고 이동하시기 바랍니다. 이렇게 해야 나중에 윈도우 스케줄러 실행할 때 파일 권한 문제가 발생하지 않습니다. 생성한 bat 파일을 실행하여 정상 작동하는지 확인하세요.
robocopy "원본폴더 위치" "복사할 위치" /MIR /R:5 /W:15 /LOG:C:\robocopy.log
해석 : 원본 폴더의 내용을 복사할 폴더에 동기화하고 C드라이브에 robocopy.log 파일을 생성해라. 복사 실패 시 5번을 재시도하고, 재시도 간격은 15초이다.
(2) vbs 스크립트
메모장을 실행하여 아래 구문을 붙여넣고 원본과 복사본의 파일 경로를 입력하세요. 입력을 마치면 다른 이름으로 저장하고 확장자는 .vbs로 저장하세요. 위에서 작성한 bat 파일과 작동방식은 같습니다. vbs 파일은 백그라운드 실행을 할 수 있어 파일 복사 시 작업에 방해되지 않습니다.(vbs를 추천함)
Set objShell = CreateObject("WScript.Shell")
strCmd = "robocopy ""원본파일 위치"" ""복사할 위치"" /MIR /R:5 /W:15"
objShell.Run strCmd, 0, True
2. 윈도우 작업 스케줄러 등록하기
위에서 작성한 bat, vbs 파일을 스케줄러에 등록하여 자동으로 실행하는 방법을 알아보겠습니다. 윈도우 스케줄러를 사용하면 해당 bat 또는 vbs 파일을 지정한 시간이나 반복 간격을 지정하여 자동화할 수 있습니다. 이번 포스팅에서는 스케줄을 등록한 시점 이후부터 1시간 간격으로 백업할 수 있도록 구성하겠습니다.
① 윈도우 왼쪽 아래 검색에서 “작업 스케줄러”를 검색하여 실행합니다.
② 작업 스케줄러 오른쪽에 “작업 만들기”를 클릭합니다.
③ 새 작업 만들기에서 이름을 입력합니다. 예시에서는 자동 백업으로 지정하겠습니다.
④ 트리 탭을 클릭하고 “편집”을 입력합니다. 작업 시작은 “예약 상태”, 설정은 “한 번”, 작업 반복 간격은 “1시간”, 기간은 “무기한으로” 설정하고 아래 사용에 체크합니다. 아래 그림을 보시고 참고하세요.
⑤ 동작 탭으로 이동하고 편집을 클릭합니다. 프로그램/스크립트에는 위에서 작성한 bat 또는 vbs 파일 전체 이름을 입력합니다. 그다음 시작 위치에는 bat, vbs 파일 경로를 입력합니다. 예시에서는 C:\monitoring_copy 폴더안에 vbs 파일이 있어 C:\monitoring_copy\ 를 입력했습니다. 폴더명 뒤에 꼭 “\”를 입력해주세요.(중요함)
⑥ 조건 탭으로 이동합니다. 저는 데스크탑 PC를 이용하여 아무런 설정을 하지 않았습니다. 따로 설정을 하지 않고 넘어갑니다.
⑦ 설정 탭으로 이동합니다. 이곳에서 작업이 실행되지 않았을 때 재실행 간격을 설정할 수 있습니다. 위에서 작성한 스크립트에서 설정한 재실행 간격과 겹치지 않게 설정합니다. 작성한 스크립트의 재실행은 총 5회 15초 간격으로 75초 이상이 소요됩니다. 스크립트 재실행 간격과 겹치지 않게 설정해야 윈도우 스케줄러에서 오류가 발생하지 않습니다.
설정을 마치면 “확인”을 클릭하면 파일 자동 백업이 시작됩니다.만약 백업되지 않는다면 먼저 작성한 bat, vbs 스크립트를 실행하여 정상작동하는지 확인 후 윈도우 스케줄러 설정을 확인해보시기 바랍니다.