[CMD] robocopy로 특정 파일 하위 폴더 유지하고 복사하기(+ 특정 폴더 제외)

2016. 2. 18. 19:26프로그래밍/Windows

728x90
728x90

상황

  • 오늘 회사에서 작업을 하며 필요한 기능이 있었다.
  • \\192.168.xx.xx\folder1\folder2\backup\folder3\folder4
  • 이런 요망한 구조에서 folder2에 중요한 데이터가 있었다.
  • 이 놈들을 data.dat라고 했을 때 문제는 backup에도 이 파일이 있다는 것.
  • 한 마디로 folder2까지 데이터와 디렉토리 구조만 원하고 backup 이하는 복사하지 말아야 한다는 것!
  • 일단 xcopy로 신나게 삽질을 하다가 지식인 https://c.aitl.in에게 도움을 요청했다. (역시 짱짱맨)

헬프

자 일단 /?를 해보자!

C:\Users\Jo Minhyuk>robocopy /?

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows용 견고한 파일 복사
-------------------------------------------------------------------------------

      시작됨 : Thu Feb 18 19:19:24 2016

           사용법 :: ROBOCOPY 원본 대상 [파일 [파일]...] [옵션]

             원본 :: 원본 디렉터리(드라이브:\경로 또는 \\서버\공유\경로)
             대상 :: 대상 디렉터리(드라이브:\경로 또는 \\서버\공유\경로)
             파일 :: 복사할 파일입니다. 이름/와일드카드: 기본값은 "*.*"입니다.

::
:: 복사 옵션:
::
                 /S :: 비어 있는 디렉터리는 제외하고 하위 디렉터리를 복사합니다.

                 /E :: 비어 있는 디렉터리를 포함하여 하위 디렉터리를 복사합니다.

             /LEV:n :: 원본 디렉터리 트리의 최상위 n개 수준만 복사합니다.

                 /Z :: 다시 시작 모드에서 파일을 복사합니다.
                 /B :: 백업 모드에서 파일을 복사합니다.
                /ZB :: 다시 시작 모드를 사용합니다. 액세스가 거부된 경우 백업 모
드를 사용합니다.
            /EFSRAW :: EFS RAW 모드에서 암호화된 모든 파일을 복사합니다.

  /COPY:copyflag[s] :: 파일에 대해 복사할 내용입니다. 기본값은 /COPY:DAT입니다.
                       (copyflags : D=데이터, A=특성, T=타임스탬프).
                       (S=보안=NTFS ACL, O=소유자 정보, U=감사 정보).

           /DCOPY:T :: 디렉터리 타임 스탬프를 복사합니다.

               /SEC :: 보안된 파일을 복사합니다. /COPY:DATS와 동일합니다.
           /COPYALL :: 모든 파일 정보를 복사합니다. /COPY:DATSOU와 동일합니다.
            /NOCOPY :: 파일 정보를 복사하지 않습니다. /PURGE와 사용하면 좋습니다
.

            /SECFIX :: 건너뛴 파일도 포함하여 모든 파일의 파일 보안을 수정합니다
.
            /TIMFIX :: 건너뛴 파일도 포함하여 모든 파일의 파일 시간을 수정합니다
.

             /PURGE :: 원본에 없는 대상 파일/디렉터리를 삭제합니다.
               /MIR :: 디렉터리 트리를 미러링합니다./ E plus /PURGE와 동일합니다
.

               /MOV :: 파일을 이동합니다. 복사한 다음 원본에서 삭제합니다.
              /MOVE :: 파일 및 디렉터리를 이동합니다. 복사한 다음 원본에서 삭제
합니다.

     /A+:[RASHCNET] :: 제공된 특성을 복사된 파일에 추가합니다.
     /A-:[RASHCNET] :: 제공된 특성을 복사된 파일에서 제거합니다.

            /CREATE :: 디렉터리 트리와 길이가 0인 파일만 만듭니다.
               /FAT :: 8.3 FAT 파일 이름만 사용하여 대상 파일을 만듭니다.
               /256 :: 256자를 초과하는 매우 긴 경로에 대한 지원을 사용하지 않습
니다.

             /MON:n :: 원본을 모니터링합니다. n개 이상의 변경 내용이 표시된 경우
 다시 실행합니다.
             /MOT:m :: 원본을 모니터링합니다. 변경 내용이 있으면 m분 후에 다시
실행합니다.

      /RH:hhmm-hhmm :: 실행 시간 - 새 복사본을 시작할 수 있는 시간입니다.
                /PF :: 통과 기준이 아닌 파일당 기준으로 실행 시간을 확인합니다.

             /IPG:n :: 패킷 간 간격(ms), 저속 회선에서 사용 가능한 대역폭을 확보
합니다.

                /SL:: 대상에 대한 심볼 링크를 복사합니다.

            /MT[:n] :: n개의 스레드가 있는 다중 스레드를 복사합니다(기본값 8).
                       n은 1 이상 128 이하여야 합니다.
                       이 옵션은 /IPG 및 /EFSRAW 옵션과 호환되지 않습니다.
                       성능을 향상시키려면 /LOG 옵션을 사용하여 출력을 리디렉션
하십시오.

::
:: 파일 선택 옵션:
::
                 /A :: 보관 특성 집합이 있는 파일만 복사합니다.
                 /M :: 보관 특성이 있는 파일만 복사하고 보관 특성을 해제합니다.
    /IA:[RASHCNETO] :: 지정된 특성을 가진 파일만 포함합니다.
    /XA:[RASHCNETO] :: 지정된 특성을 가진 파일을 제외합니다.

 /XF file [file]... :: 지정된 이름/경로/와일드카드와 일치하는 파일을 제외합니다.

 /XD dirs [dirs]... :: 지정된 이름/경로와 일치하는 디렉터리를 제외합니다.

                /XC :: 변경된 파일을 제외합니다.
                /XN :: 새 파일을 제외합니다.
                /XO :: 오래된 파일을 제외합니다.
                /XX :: 추가 파일 및 디렉터리를 제외합니다.
                /XL :: 고립된 파일 및 디렉터리를 제외합니다.
                /IS :: 같은 파일을 포함합니다.
                /IT :: 조정된 파일을 포함합니다.

             /MAX:n :: 최대 파일 크기 - n바이트를 초과하는 파일을 제외합니다.
             /MIN:n :: 최소 파일 크기 - n바이트 미만의 파일을 제외합니다.

          /MAXAGE:n :: 최대 파일 사용 기간 - n일/날짜보다 오래된 파일을 제외합니
다.
          /MINAGE:n :: 최소 파일 사용 기간 - n일/날짜보다 최신 파일을 제외합니다
.
          /MAXLAD:n :: 최대 마지막 액세스 날짜 - n 이후에 사용되지 않은 파일을
제외합니다.
          /MINLAD:n :: 최소 마지막 액세스 날짜 - n 이후에 사용된 파일을 제외합니
다.
                       n이 1900보다 크면 n은 n일과 같고 그렇지 않으면 n은 YYYYMM
DD 날짜입니다.

                /XJ :: 연결 지점을 제외합니다. 일반적으로 기본값으로 포함됩니다.


               /FFT :: FAT 파일 시간(2초 단위)을 가정합니다.
               /DST :: 1시간의 DST 시간 차이를 보완합니다.

               /XJD :: 디렉터리의 연결 지점을 제외합니다.
               /XJF :: 파일의 연결 지점을 제외합니다.

::
:: 다시 시도 옵션:
::
               /R:n :: 실패한 복사본에 대한 다시 시도 횟수입니다. 기본값은 1백만
입니다.
               /W:n :: 다시 시도 간 대기 시간입니다. 기본값은 30초입니다.

               /REG :: /R:n 및 /W:n을 레지스트리에 기본 설정으로 저장합니다.

               /TBD :: 정의할 공유 이름을 기다립니다(다시 시도 오류 67).

::
:: 로깅 옵션:
::
                 /L :: 목록 전용 - 파일을 복사 또는 삭제하거나 타임스탬프를 만들
지 않습니다.
                 /X :: 선택된 파일을 제외하고 모든 추가 파일을 보고합니다.
                 /V :: 자세한 정보 표시를 출력하고 건너뛴 파일을 표시합니다.
                /TS :: 출력에 원본 파일 타임스탬프를 포함합니다.
                /FP :: 출력에 파일의 전체 경로 이름을 포함합니다.
             /BYTES :: 바이트 크기로 인쇄합니다.

                /NS :: 크기 없음 - 파일 크기를 기록하지 않습니다.
                /NC :: 클래스 없음 - 파일 클래스를 기록하지 않습니다.
               /NFL :: 파일 목록 없음 - 파일 이름을 기록하지 않습니다.
               /NDL :: 디렉터리 목록 없음 - 디렉터리 이름을 기록하지 않습니다.

                /NP :: 진행률 없음 - 복사율(%)을 표시하지 않습니다.
               /ETA :: 복사하는 파일의 예상 도착 시간을 표시합니다.
          /LOG:file :: 상태를 로그 파일에 출력합니다. 기존 로그를 덮어씁니다.
         /LOG+:file :: 상태를 로그 파일에 출력합니다. 기존 로그에 추가합니다.

       /UNILOG:file :: 상태를 유니코드로 로그 파일에 출력합니다. 기존 로그를 덮
어씁니다.
      /UNILOG+:file :: 상태를 유니코드로 로그 파일에 출력합니다. 기존 로그에 추
가합니다.

               /TEE :: 로그 파일과 콘솔 창에 출력합니다.

               /NJH :: 작업 헤더가 없습니다.
               /NJS :: 작업 요약이 없습니다.

           /UNICODE :: 상태를 유니코드로 출력합니다.

::
:: 작업 옵션:
::
       /JOB:jobname :: 명명된 작업 파일에서 매개 변수를 가져옵니다.
      /SAVE:jobname :: 명명된 작업 파일에 매개 변수를 저장합니다.
              /QUIT :: 매개 변수를 볼 수 있도록 명령줄을 처리한 후에 끝냅니다.
              /NOSD :: 원본 디렉터리가 지정되어 있지 않습니다.
              /NODD :: 대상 디렉터리가 지정되어 있지 않습니다.
                /IF :: 다음 파일을 포함합니다.
  • 기능이 많다.

해결

robocopy "\\192.168.xx.xx\folder1" "F:\work\Test" /E /TEE *.dat /XD *"backup"
  • 위 명령어처럼 해결했다.
  • /E는 하위 디렉토리를 포함하겠다는 뜻이고 *.dat 파일을 찾으며 /XD 명령으로 backup 폴더 이름을 가진건 모두 제외하겠다는 뜻.
  • 괜찮은 녀석인 것 같다. 배치 파일 만들 때 또 써먹어봐야지.
  • 지인의 말로는 robocopy는 무려 멀티 스레드를 쓰기 때문에 속도도 훨씬 빠르다고 한다.
  • 전체 용량 60기가를 통째로 복사하는 미친짓을 안 할 수 있어서 정말 다행인 것 같다. :)
728x90
반응형