Windows의 빠른 파일 복사 스크립트

Windows의 빠른 파일 복사 스크립트

매달 실행되는 프로세스가 있습니다. 이러한 프로세스는 파일 집합을 식별하고 DB의 여러 테이블의 여러 필드에서 적절한 원본 및 대상 경로를 구성한 다음 이러한 파일을 모두 복사하므로 잠재적으로 수십만 또는 수백만 개의 경로가 생성됩니다. 이러한 경로는 이전에 복사되었지만 수정된 파일을 가리킬 수 있습니다.

가능한 가장 빠른 방법으로 이 복사를 수행하려면 어떻게 해야 합니까?

처음에는 결과 경로별로 파일이 대상 경로에 있는지 확인한 다음 존재하지 않는 경우 복사를 시도했지만 수정된 파일을 건너뛰는 간단한 거대한 cmd 스크립트를 시도했습니다. 그래서 날짜가 동일한 경우 덮어쓰기를 피하기 위해 /D 스위치와 /Y 스위치를 사용하여 프롬프트를 자동으로 확인함으로써 "xcopy"를 사용하려고 시도했지만 실제로는 수십만 개의 xcopy 명령이 포함된 거대한 스크립트가 필요합니다. 영원히 그리고 이러한 파일 중 일부 또는 대부분이 이미 동일한 날짜로 존재하는 경우 속도가 향상되지 않습니다. 나에게 도움이 될 만한 아이디어가 있나요? 수백 개의 소스 및 대상 경로가 포함된 파일로 이들 모두의 복사본을 만들려면 어떻게 해야 합니까? xcopy보다 더 빠른 대안이 있습니까? 아니면 더 빠른 날짜 확인 후 복사 명령을 호출하시겠습니까?

현재 DB 정보를 기반으로 파일을 가져오고 복사하는 방법에 대한 자세한 설명: DB에는 여러 테이블이 있습니다.

표 1: ID, Dir_Name, ...

표 2: ID, Dir_Name, ...

...

테이블 N: ID, Dir_Name, ...

소스 폴더 경로 테이블: Dir_Name, Dir_FullPath

대상 폴더 경로 테이블: Dir_Name, Dir_FullPath

그런 다음 복사 명령 세트를 만들 수 있습니다(또는 소스 및 대상 경로만 가져올 수도 있습니다).

Select 'xcopy /d /y '|| T2.Dir_FullPath || '\\' || ID || '.ext ' || T3.Dir_FullPath || '\\' || ID || '.ext*' 
from Table1 T1 
left join SourceFolderPathsTable T2 on T1.Dir_Name=T2.Dir_Name
left join DestFolderPathsTable T3 T1.Dir_Name=T3.Dir_Name where T1.some_criteria=true;

감사합니다!

답변1

Windows와 함께 제공되는 명령줄 도구인 "robocopy"를 살펴보세요. 나는 그것이 응답 파일을 받아들일 수 있다고 생각하며 이미 날짜/시간이 변경된 파일만 업데이트하도록 지시할 수 있으며 GUI 오버헤드가 없는 순수한 명령줄이므로 얻을 수 있는 속도만큼 빠릅니다.

관련 정보