증분 백업을 수행하는 ROBOCOPY 명령


31

ROBOCOPY 문서에 압도되었습니다. 로컬 파일을 네트워크 드라이브 (M)에 증분 백업하려고합니다. 로그 파일이없고 화면에 텍스트가 거의없는 상태에서 가능한 빨리 실행하고 싶습니다. 내 파일은 모두 중첩 된 하위 폴더가있는 하나의 폴더 (MyFolder) 안에 있습니다. "증분"이란 "새롭거나 변경된 내용 만 복사"를 의미합니다. 대상에서 기록 파일을 삭제하고 싶지 않지만 파일을 변경 한 경우 최신 버전 만 원합니다. 파일을 변경하지 않은 경우 기존 백업 파일 위에 파일을 복사하고 싶지 않습니다. 아래가 맞습니까? (Win7 Enterprise 실행)

robocopy C:\MyFolder M:\MyFolder /z /np /xo /e

robocopy 외에는 아무 것도 제안하지 마십시오. 아무것도 설치할 수 없습니다. 그리고 나는 보안에 관심이 없습니다. 나는 그것을 원하는 사람들이 있습니다. ;-)


1
하위 디렉토리를 복사하려면 / s 또는 / e 옵션이 필요합니다.
— David Marshall

@DavidMarshall : 죄송합니다. 나는 실제로 그것을 알고 있었다. 추가되었습니다. 그래서 지금은 좋은가요?
— dmm

예. 비슷한 것을 사용하고 있습니다.
— David Marshall

지금 테스트 중입니다. 여전히 화면에 많은 내용이 기록되고 있습니다. 향후 실행에서 어떻게 제거합니까?
— dmm September

3
현명한 성능 차이를 만들 수있는 한 가지 옵션은 다중 스레드 전송을하는 것입니다. /MT[:N] 나는 4 코어 CPU를 가지고 있으므로 일반적으로 스레드 수에 8-16 범위의 무언가를 사용합니다. 코어 당 2-4 개의 스레드를 보여줍니다. 하드웨어에서 다른 값으로 테스트해야합니다. 다중 스레드는 작은 파일이 많을 때 가장 도움이됩니다. 적은 수의 큰 파일이 있으면 거의 도움이되지 않습니다.
— Zoredache

답변:


40

몇 년 동안 다음 스크립트의 변형을 성공적으로 사용했습니다.

robocopy C:\source M:\destination /MIR /FFT /R:3 /W:10 /Z /NP /NDL

설명 된 매개 변수

  • /MIR(에 해당하는 옵션은 /E /PURGE) "거울"의 약자 가장 중요한 옵션입니다. 소스 폴더를 "마스터"로 간주하여 대상 측의 변경 사항을 덮어 쓰게되므로 백업에 유용한 설정입니다.

  • /FFT파일의 타임 스탬프를 비교할 때 2 초 차이를 허용하므로 컴퓨터와 백업 장치 간의 작은 클록 차이는 중요하지 않으므로 매우 중요한 옵션입니다. 이렇게하면 파일 수정 시간이 정확하게 동기화되지 않은 경우에도 수정 된 파일 만 복사됩니다.

  • /R:3연결이 실패해야하는 경우 재시도 횟수를 /W:10지정하고 재시도 사이의 대기 시간을 10 초로 지정합니다. 네트워크를 통해 백업을 수행 할 때 유용한 옵션입니다.

  • /Z "재시작 모드"로 파일을 복사하므로 중단 후에 부분적으로 복사 된 파일을 계속 사용할 수 있습니다.

  • /NP및 /NDL일부 디버그 출력을 억제, 당신은 추가로 추가 할 수 있습니다 /NS, /NC, /NFL더 출력의 양을 줄이기합니다 (참조 문서 자세한 내용을). 그러나 첫 번째 실행 중에 디버그 출력을 인쇄하여 모든 것이 예상대로 작동하는지 확인하는 것이 좋습니다.

다른 사용자가 언급 한 추가 유용한 매개 변수

  • /XJD백업시 무한 루프와 같은 문제를 일으킬 수있는 기호 링크 인 디렉토리의 "접점"을 제외합니다. 자세한 내용은 Brian 의 의견을 참조하십시오.

  • /MT[:N]멀티 스레딩을 사용하며 많은 작은 파일의 전송 속도를 높일 수 있습니다. N의 경우, 일반 머신에서 코어 수의 2-4 배 값을 사용해야합니다. Zoredache 가 원래 질문에 댓글을 달았습니다 .

Granger의 의견에 따라 편집하십시오.

당신이 정말로 소스 측에 목적지에 존재하는 파일 아니지만을 유지하려면, 단순히 교체 /MIR와 옵션을 /E. 그러나 /MIR증분 백업에 대상을 사용하려는 경우 사용하는 것이 좋습니다 . 그렇지 않으면 이름을 바꾸거나 소스에서 이동 한 파일이 대상을 복잡하게 만들므로 중복이 발생합니다. 일반적으로 소스 폴더 트리의 1 : 1 복사본이 포함 된 대상에 하위 폴더 "백업"을 만듭니다. 이렇게하면 백업 폴더 옆에 기록 파일을 보관하고 나중에 안전하게 제거하거나 재구성 할 수 있습니다.


이 명령으로 권한이있는 파일을 복사 할 수 있습니까? robocopy C : \ source M : \ destination / MIR / FFT / R : 3 / W : 10 / Z / NP / NDL
— Shabeer Sher

4
/ MIR (/ PURGE)을 제외하고 소스에 더 이상 존재하지 않는 대상에서 파일을 삭제합니다. 그 질문은 원하지 않았다는 것을 명시 적으로 언급했다 .
— Granger

@Shabeer No, Robocopy는 기본적으로 데이터 (D), 속성 (A) 및 타임 스탬프 (T) 만 복사합니다. ACL 권한을 포함하려면 "/ copy : <value>"매개 변수를 사용하여 다른 값을 지정해야합니다 (예 : "/ copy : DATS"). 그러나 Linux 기반 NAS에 복사 한 이후에는 그다지 의미가 없습니다.
— pederpansen

1
@ 브라이언 힌트를 주셔서 감사합니다. 나는 접합점에 문제가 없었지만, 만일을 위해 그것을 피하는 것이 아프지 않을 것이라고 생각합니다. 내 대답에 추가했습니다.
— pederpansen

1
@pederpansen : 사용자 폴더를 복사하거나 전체 드라이브를 복사 할 때 발생하는 경향이 있습니다. 일반적으로 응용 프로그램 데이터 폴더는 응용 프로그램 호환성 이유로 인해 연결 지점이 있으므로 범인입니다. 샘플 무한 경로를 보려면 명령 프롬프트에서 "cd C : \ Users \ [USERFOLDER] \ AppData \ Local \ Application Data \ application data \ application data \"를 실행하십시오. 이것은 Windows 10에서도 작동합니다.
— Brian

8

나는 다음을 사용하고 싶다 :

robocopy "C:\Users\<user>" "F:\robocopy\<user>" /XJD /R:0 /XA:SH /E /ZB /XO /XD "Downloads" "AppData" /LOG:robocopy.log /TEE

백업 모드 ( /b옵션)가 사용중인 파일의 사본을 만들 수 있도록 관리자로 이것을 실행 합니다.

백업의 증분 특성과 관련이없는 다른 옵션은 다음과 같습니다.

/XD 백업에서 디렉토리를 제외합니다.

/XJD 연결 지점을 제외합니다 ( "내 음악").

/R:0 실패한 시도에 대한 재 시도를 0으로 설정합니다.

/XA:SH 숨겨진 파일과 시스템 파일을 건너 뜁니다.

가능한 많은 로깅 정보를 제거하려면 다음 옵션을 추가하십시오 /NP /NS /NDL /NFL /NC.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.