robocopy 사용 및 여러 디렉토리 제외


60

백업에서 복원하기 전에 서버에서 일부 디렉토리를 복사하려고합니다 (최근 백업이 손상되었으므로 이전 백업을 사용해야합니다. (). Windows 복구 환경에 있고 서버 파일에 액세스 할 수 있습니다. 시스템 G:\과 백업 미디어 C:\.하지만 Linux에 익숙하기 때문에 Windows의 명령 줄에 특히 문제가 robocopy있습니다.

다른 디렉토리 (Windows 및 Program Files 폴더)를 제외하고 여러 디렉토리 (동일한 디렉토리 구조를 유지)를 G : \에서 C : \로 복사하고 싶습니다. /XD옵션 의 구문을 알 수 없습니다 . 나는 다음과 같은 것을하기를 바랐다.

robocopy G: C:\backup /CREATE /XD "dir1","dir2", ...

참고 : 디렉토리 구조를 유지하면서 실제 파일을 복사하고 싶다는 것을 분명히하고 싶습니다. 방금 확인하고 /create빈 파일 만 만듭니다. 기묘한.

답변:


90

나는 약간의 시행 착오와 /L(실제로하기 전에 명령을 테스트하기 위해) 알아 냈습니다 . 내가 끝내는 명령은 다음과 같습니다.

robocopy G: C:\backup /MIR /XD G:\dir1 "G:\dir 2" G:\dir3 ...

후행 슬래시를 포함하면 robocopy가 디렉토리 목록을 올바르게 구문 분석하지 못하므로 디렉토리 이름에 후행 슬래시를 포함하지 말고 이름에 공백이있는 디렉토리를 따옴표로 묶어야합니다.

/MIR옵션은 파일을 복사하는 동안 동일한 디렉토리 구조를 유지합니다.

편집 : 좀 더 연구 한 후 명령을 조금 개선했습니다.

robocopy G: C:\backup /MIR /Z /LOG:C:\todaysdate-backup.log /XF *.iso *.log *.au /XD G:\dir1 ...

추가 된 내용은 다음과 같습니다.

  • /Z 작업을 다시 시작할 수 있습니다
  • /LOG:<logfile path> 꽤 자명하다.
  • /XF 특정 파일 형식을 제외하는 데 사용되므로 오래 걸리지 않습니다.

1
항상 /?스위치를 사용하여 Windows 콘솔 명령에 대한 도움말 정보를 얻을 수 있습니다 . helpLinux man프로그램 과 비슷한 명령 도 있지만 타사 프로그램에서 사용하는 것을 보지 못했습니다 (작동 방식에 익숙하지 않거나 가능한 경우).
벤 리차드

댓글 주셔서 감사합니다. help명령 이 있다고 생각 했지만 Windows 복구 환경에서 활성 상태가 아닌 것 같습니다 ( "No command 'help'found"라는 오류가 표시됨). Robocopy는 xcopy를 대체하고 타사가 아닌 Windows 기본 명령입니다.
GorrillaMcD

1
나는 그것이 Windows 명령이며 타사가 아니라는 것을 알고 있습니다. Windows의 명령 환경에 익숙하지 않다고 말했기 때문에 나중에 참조하기 위해 여기에 넣었습니다. :)
Ben Richards

2
설명 : /MIR(미러 A에서 B로)는 A에 존재하지 않는 B의 모든 파일을 삭제합니다. 이것은 복사하려는 디렉토리가 이미 존재하고 새 버전 (B)이 A의 정확한 복제본이되기를 원할 때 유용합니다. (현재 존재).
SherylHohman

4

나는 이것이 OP의 질문에 대답하지는 않지만 Google의 여기 누구에게나 : 따옴표를 사용하면 작업 파일에서 XD가 실패한다는 것을 알고 있습니다.

나쁜:

::
:: Exclude These Directories :
::
    /XD     :: eXclude Directories matching these names
        "Temporary Internet Files"

좋은:

::
:: Exclude These Directories :
::
    /XD     :: eXclude Directories matching these names
        Temporary Internet Files

따옴표를 사용하지 않고 공백없이 원하는만큼 많은 제외를 배치하십시오.

내가 발견 한 방법은 인용 된 디렉토리에서 따옴표를 제거한 명령 줄 스위치 / SAVE : myjobname을 사용하는 것입니다!


4

당신은 /XD부분 을 반복해야

C:\>robocopy "C:\Users\weberjn\Google Drive" "u:\Google Drive" /e /dcopy:t /copy:DT /r:0 /XD "C:\Users\weberjn\Google Drive\photos" /XD "C:\Users\weberjn\Google Drive\Google Photos"

1

이것에 대한 나의 해결책은 포함하거나 제외하려는 파일이나 디렉토리를 포함하는 .txt 파일을 만드는 것입니다. "Backup"폴더 아래의 "rcXcludes"하위 폴더에 이러한 파일이 있습니다. 파일 이름을 지정하는 방법은 다음과 같습니다. "rc"(robocopy의 경우)로 시작한 다음 robocopy 명령에서 파일 시스템의 응용 프로그램 또는 일부에 대해 인식 가능한 표기법을 표시 한 다음 "B"또는 "R"(Backup 또는 Restore의 경우), "I"를 추가합니다. 또는 "X"(포함 또는 제외), "D"또는 "F"(디렉토리 또는 파일의 경우). 각 항목을 큰 따옴표로 묶고 항목 사이에 공백을 넣습니다. "포함"파일에는 파일 또는 디렉토리가있을 수 있지만 디렉토리에는 후행 백 슬래시가 있어야합니다. 디렉토리의 "제외"파일에서는 후행 백 슬래시를 사용하지 않습니다. 모든 디렉토리 항목은 robocopy 명령의 소스 경로와 관련됩니다. 이러한 .txt 파일의 전체 내용은 한 줄에 있어야합니다.하지 carraige 반환 라인 피드가 있습니다. 배치 파일에서 SET / P 명령을 사용하여 .txt 파일을 변수로 가져옵니다. 그런 다음 FILES 또는 / XF 또는 / XD 뒤에이 변수를 사용합니다. 예를 들어 전체 "기본"폴더를 복사하지 않고 현재 사용자의 Chrome 프로필을 백업하려면 다음을 사용합니다.

rcChromeBIF.txt  
"Bookmarks" "Custom Dictionary.txt" "Extension Cookies" "Favicons" "History" "Login Data" "Preferences" "Top Sites" "Visited Links" "Web Data" "Databases\" "Extensions\" "Local Storage\" "Plugin Data\" "User Scripts\" "User StyleSheets\"

rcChromeBXF.txt  
"Bookmarks.bak" "ChromeDWriteFontCache" "Cookies" "Cookies-journal" "Current Session" "Current Tabs" "Extension Cookies-journal" "Favicons-journal" "Google Profile.ico" "History Provider Cache" "History-journal" "Last Session" "Last Tabs" "Login Data-journal" "Network Action Predictor" "Network Action Predictor-journal" "Network Persistent State" "Origin Bound Certs" "Origin Bound Certs-journal" "QuotaManager" "QuotaManager-journal" "README" "Secure Preferences" "Shortcuts" "Shortcuts-journal" "Top Sites-journal" "TransportSecurity" "Web Data-journal"

rcChromeBXD.txt  
"Application Cache" "Cache" "data_reduction_proxy_leveldb" "Extension State" "File System" "GPUCache" "IndexedDB" "JumpListIcons" "JumpListIconsOld" "Local Extension Settings" "Media Cache" "Pepper Data" "Platform Notifications" "Service Worker" "Session Storage" "Storage" "Thumbnails" "Web Applications"

bat 파일의 C : \ Backup에서

REM ChromeBak.bat
SET chromeprofdir=Google\Chrome\User Data\Default
SET /P rcChrmBIF=<C:\Backup\rcXcludes\rcChromeBIF.txt
SET /P rcChrmBXF=<C:\Backup\rcXcludes\rcChromeBXF.txt
SET /P rcChrmBXD=<C:\Backup\rcXcludes\rcChromeBXD.txt
robocopy "%LOCALAPPDATA%\%chromeprofdir%" "H:\ChromeBackup\%chromeprofdir%" %rcChrmBIF% /E /ZB /COPY:DAT /DCOPY:T /MT:4 /XJ /XF %rcChrmBXF% /XD %rcChrmBXD% /R:10 /W:2 /TBD /NP /V /TS /Log+:"H:\ChromeBackup\ChromeBackup.log"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.