2012-06-13 3 views
1

약 50,000 개의 .jpg 이미지가있는 디렉토리가 있습니다. 이 디렉토리를 "imageDir"이라고하고 "outputDir"에 복사하려고하는 빈 디렉토리를 봅시다. unix : 오류가 발생하면 cp를 계속 하시겠습니까?

내가 실행할 때 : 30,000ish 이미지 주위

cp imageDir/* outputDir/ 

를 I를 통해 얻을 :

cp: cannot open `imageDir/234235.jpg' for reading: Bad address 

(이 항상 같은 파일에 발생하지 않습니다) 다음 복사 작업은 복사하지 않고 중단됩니다 나머지 파일들. 나는 오류가 발생한 경우에도 그 사본을 계속할 것이라는 점을 읽은 후 -R 옵션을 추가했습니다 :

cp -R imageDir/* outputDir/ 

를하지만 이건 내 문제를 해결하기 위해 아무것도하지 않았다.

한 번에 성공적으로 복사 할 수있는 파일 수에는 제한이 있습니까? 이 오류가 표시되는 이유는 무엇이며 어떻게 해결할 수 있습니까? (그냥 여기저기서 사진을 찍은 경우에 나머지 부분을 완성하는 한 괜찮을 것입니다.)

또한 Windows 7에서 Cygwin을 사용하고 있습니다. 감사합니다!

+0

아마도 'rsync'가 더 나은 오류 처리 옵션을 가지고 있을까요? – cdhowie

+0

@cdhowie 아마도? 나는 rsync에 대해 몰랐다. 이 예제의 구문은 무엇입니까? – Ken

+0

'cp'에 대한 -R 옵션은 오류 처리와 아무 관련이 없습니다. 발견 된 서브 디렉토리의 내용이 대상에 재귀 적으로 복사됨을 의미합니다. –

답변

2

저에게 Cygwin에 문제가있는 것 같습니다. 당신이 무작위로 일어난다 고 했으므로 일어 났을 때 다시 시도하고 싶을지도 모릅니다.

#!/bin/sh 
for i in imageDir/* 
do 
    cp $i outputDir/ 
    while [ $? -ne 0 ] 
    do 
    cp $i outputDir/ 
    done 
done 
+0

흠 .. 나는 그 제안을 고맙게 여긴다. 그러나 그것은 격렬히 느리다. 나는 그것이 너무 느릴 것이라고 생각하지 않았다. 그러나 아무도 다른 것을 생각해 내지 않으면 대답을 해줄 것이다. – Ken

+0

느린 경우에도 내 대답은 실제로 작동하면 upvote 수 있습니다.) –

+0

무슨 일이 일어나고 있는지 알 수 있도록'-v'를'cp'에 제공하는 것이 좋습니다. (이것이 cron에서 실행되지 않는 한, 예를 들어.) – cdhowie

관련 문제