DAV2fs를 사용하여 Box.com에 많은 수의 파일을 복사해야 합니다. 나는 한 번에 몇 개의 공연만 복사할 수 있다는 것을 알았고, 상자가 따라잡거나 뭔가 잘못될 때까지 몇 분을 기다려야 했습니다.
그래서 제가 한 일은 "find ./>outfile.txt"를 사용하여 모든 파일/디렉토리를 나열하는 것이었습니다.
파일 목록을 반복하면서 100개 사본(또는 무엇이든) 후 10분을 기다리고 싶습니다. 어떻게 해야 하나요? cp -r을 사용하지 않으면 outfile.txt가 다음과 같이 표시됩니다.
/dirctory1
/directory1/file.txt
/directory1/file2.txt
cp는 디렉터리를 무시하므로 file과 file2는 복사되지 않습니다. cp -r을 수행하면 디렉토리 1과 모든 내용이 실행되므로 파일 수가 줄어듭니다.
편집하다:
명확히하기 위해 cp 부분에 관심이 있습니다. 구체적으로, -r을 수행하지 않고 cp가 디렉토리를 생성하도록 하려면 어떻게 해야 합니까? 이로 인해 카운트가 실패하게 됩니다.
답변1
이 시도. (검증되지 않은.)
destination= # assign
i=0
while read line; do
cp --parents "$line" "$destination"
((i++))
[ $i -eq 100 ] && sleep 600 && i=0
done < outfile.txt
# or: done < <(find ... and so on) # to avoid creating the temp file
답변2
"echo cp"를 실제 값으로 변경 cp
하고 다음을 수행하십시오. 100개의 파일이 처리될 때마다 10분 동안 대기합니다. 파일 이름에 줄 바꿈이 없다고 가정하므로 outfile.txt의 각 줄은 파일 이름에 해당합니다.
#!/usr/bin/env bash
count=0
while IFS= read -r file
do
echo cp "$file" dest/
count=$((++count))
[[ $(($count % 100)) == 0 ]] && sleep $((10 * 60))
done < outfile.txt