cmd robocopy 를 활용한 데이터 백업
by coDribble
간단하게 까먹지 않기 위해 cmd창에서 robocopy 명령을 통한 데이터 백업을 해보자.
외장하드를 연결하고 로컬에서 작업했던 파일 or 디렉터리 들을 외장하드 폴더에 복붙하면 되는데… 여기서 이슈가 발생. 끌어다 놓고 밥을 먹고 왔는데… 동일한 파일을 덮어씌울건지 alert창이 떠있는 것이 아닌가… 후…
당연히 alert창이 뜰 것이라고 예상은 했으나 매번 까먹는다… alert창이 뜬채로 허송세월을 보낸 것이 아까워서 구글링을 해봤다.
git 을 배우려고 깨잘깨잘 구글링했었을 때, cmd 창을 이용해서 push 하고 어쩌구저쩌구 copy하고 어쩌구저쩌구… 그 당시엔 무슨말인지 몰라 흘려봤던 것이 번쩍하고 뇌리를 스쳤다.
cmd 로 파일 복사, 붙여넣기, 동기화
xcopy
그래서 cmd를 통해 파일을 복사하는 것을 알게 되었다. copy와 xcopy가 있었는데 copy보다는 더 강력한 xcopy 로 복붙해왔다.
사용법
xcopy [원본 경로] [대상 경로] 옵션
옵션에는 /d , /y , /e , /h , /k 등등… 여러 옵션이 있는데 내가 사용한 옵션은 5개정도다.
- /d - 원본 파일과 대상 파일의 날짜를 비교해서 최근에 수정된 파일을 복사
- /e - 빈 폴더를 포함한 모든 디렉터리를 복사
- /y - 덮어씌울 때 묻지도 따지지도 않고 복사
- /h - 숨김파일이나 시스템파일도 복사
- /k - 파일의 속성도 복사
이러한 기능을 하는 옵션들이다.
xcopy D:\원본경로\* F:\대상경로 /e /d /y /h /k
나는 이렇게 불러왔다. 다른 옵션이 궁금하다면 xcopy option 검색을 해보자.
robocopy
이런 식으로 입력해서 복사를 해왔다. 여기서 다시 이슈가 발생한다. 예전에 한번 백업을 해두었는데 로컬에서는 구조를 여러번 수정했었다. 그러다 보니 제대로 복사는 이루어졌는데… 구조가 엉망(?)이 되었다. 다시 구글링을 한다. cmd로 파일 복사 하는 법을 알았으니 이제 동기화하는 부분을 검색했다.
robocopy라는 명령어를 알게 되었다. robocopy는 윈도우 비스타부터 도입되었고 xcopy의 업그레이드 버전이라고 한다. robocopy의 장점은…. 중복카피는 하지 않는다고 한다. 새로 추가된 파일이나 폴더가 있을 경우 복사하고, 이미 있는 파일은 안하나보다… 그래서 빠른 백업이 가능하다고 한다. 또 이력(?)을 남길 수 있다. 흔히들 log라고 하는… 명령 실행하면서 “이건 수정된거라 복사해왔고, 이건 로컬에 없길래 지웠고, 이건 새로 생성됐길래 추가했어” 라고 기록을 남길 수가 있다.
거두절미하고 사용법 부터 알아보자.
사용법
robocopy [원본 경로] [대상 경로] 옵션
xcopy와 사용법은 크게 다르지 않다. 단지 옵션이 다르다.
- /e - 빈 디렉터리를 포함한 모든 디렉터리를 복사
- /r:n - 실패한 폴더 or 파일에 대해 재시도할 횟수, 여기서 n은 횟수를 입력(기본값은 100만)
- /w:n - 재시도 대기시간(기본값은 30초)
- /log:”파일명” - 명령 실행시 위에 언급했던 기록을 남길 파일(기존 로그 파일에 덮어씀)
- /log+:”파일명” - 명령 실행시 위에 언급했던 기록을 남길 파일(기존 로그 파일에 추가)
- /mir - 디렉터리 트리를 미러링(동기화)
- /ndl - 로그파일에 디렉터리 이름을 기록하지 않음
- /nfl - 로그파일에 파일 이름을 기록하지 않음
이러한 옵션들이 있다.
robocopy D:\원본경로 F:\대상경로 /e /mir /r:5 /w:10 /log+:"F:\backup\history.log" /ndl /nfl
내가 내린 명령이다. 로그기록에는 추가로 작성하고 결과만 남기기 위해 /ndl, /nfl 를 썼고, 복사 실패할 경우 5번까지 재시도를 하면서, 재시도 대기시간은 10초로 설정한 것이다.
robocopy의 더 많은 옵션이 궁금하다면 robocopy option 검색을 해보자.
이제 방법을 알아서 너무 기쁘다… 일일이 덮어씌울거냐는 물음에 대답을 안해도 자동으로 덮어씌울 것이고, 기존 파일은 놔두고 수정되었거나 새로 추가된 디렉터리나 파일만 옮겨질 테니깐. 드디어 동기화에 성공했다!!!
그런데 이렇게 구글링 해가며 찾다보니까… 원하는 시간에 자동으로 알아서 동기화…를 시킬 수 있다는 것을 자연스레 알게 되었다. 그러나 그러려면 나는 외장하드에 백업을 하는데… 동기화를 시킬 시간이 되기 전에 외장하드를 연결해놓고 있어야 하나?? 하는… 의문과 그때 외장하드가 연결이 안되어있으면 어떻게 되지??라는 불안감에 자동 동기화는… 좀 더 나중에 하기로 하고…
파일실행과 동시에 동기화 작업
매번 동기화를 하고 싶을때마다 cmd창을 켜고 명령어를 입력해주고… 아직 배울게 산더미인데… 저 명령어들이 내 머리 속에 남아 있을까…?? 뭐 자주 백업한다면 그러하겠지만… 백업을… 그렇게 자주 할 것 같진 않다… 아;; 이제 빨라졌으니 하루에 한번은 백업받는걸로 해도 되겠지만! 그래도 매번 명령어를 입력하기 귀찮다. 그런 사람들을 위한 방법이 저 명령문(?)을 cmd 파일로 만들어 버리는 것이다. 이게 진짜 꿀팁인듯 하다.
메모장을 열고 원하는 명령을 입력 후 파일을 저장할 때 모든파일로 해놓고, 파일명.cmd 로 저장을 한다. 그럼 끝! 요즘같은 초시대에 초간단명료!한 방법인 듯 하다.
이제 나는 백업할 것이다. 라고 생각이 들었으면 좀전에 만든 cmd 파일을 실행한다. 그럼 알아서 동기화가 될 것이다.
Subscribe via RSS