증분 백업을 수행하는 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.