나는 최근에 많은 작은 하위 폴더와 파일을 포함하는 더 큰 디렉토리에서 작은 txt 파일을 많이 포함하는 하위 폴더를 끌어 올 수있는 작은 스크립트를 작성했습니다.복사 항목 속도 저하 - 5500 개의 파일을 필터링하고 복사하려면 40 분이 필요합니까?
외부 하드 디스크의 로컬 드라이브에 txt 파일이 들어있는 ~ 17GB 상당의 폴더 (~ 5,500 개의 파일이 포함 된 100 개 폴더)가 모두 복사되었습니다. 연결은 USB 2.0이었다.
이 작업을 수행하는 데 약 40 분이 걸렸습니다! 왜 이렇게 오래 걸렸을까요?
내 코드 또는 오래된 데이터 연결의 속도 저하와 관련하여 더 많은 오버 헤드가 있었습니까? 앞으로 어떤 단축키를 사용할 수 있습니까? robocopy는 복사 항목보다 본질적으로 빠릅니까? 그렇다면 왜?
$mainDir = Get-ChildItem 'E:\Some Big Directory\' -Recurse | Where {$_.Mode -match 'd'} | % {$_.FullName}
ForEach($dir in $mainDir){
if($dir.ToString() -match 'SubfoldersIWant'){
Copy-Item -Path $($dir + '\TheActualFolderIWant\*') -Destination 'C:\somwhere' -Recurse
}
}
폴더 구조는 (아래 크기 WAY)를 다음과 같이 다소이다 :
Get-ChildItem 'E:\Some Big Directory' -Directory -Recurse | Where {$_.FullName -match 'SubfoldersIWant'} | Copy-Item -Destination 'C:\somwhere' -Recurse
이 방법, 필터링이 훨씬 빠릅니다 :
Some Big Directory -SubfoldersIWant1 -subFolderIDontwant -random.txt -subFoldersIWant -*.txt -rando.jpg -I dont want this folder -random junk -SubfoldersIWant2 -subFolderIDontwant -random.txt -subFoldersIWant -*.txt -rando.jpg -dontwantthiseither.jpg
첫 줄에'% {$ _. fullname}'을'select -expand fullname'으로 대체했습니다. – Vesper
USB2는 USB3보다 10 배 느리므로 자주 업그레이드 할 계획이라면 드라이브 업그레이드에 대해 생각해보십시오. –
@ JamesC. 재미있게도 드라이브는 3.0이지만 현재 워크 스테이션은 2.0 만있는 오래된 델입니다 : ( – Christopher