하나의 USB 플래시 드라이브에서 다른 여러 플래시 드라이브로 파일을 복사하는 가장 빠른 방법은 무엇입니까?

하나의 USB 플래시 드라이브에서 다른 여러 플래시 드라이브로 파일을 복사하는 가장 빠른 방법은 무엇입니까?

하나의 USB 드라이브에서 다른 여러 드라이브로 파일을 복사하는 bash 스크립트를 작성 중입니다.

현재 rsync를 사용하여 소스에서 단일 대상으로 복사하고 모든 출력 드라이브를 한 번에 하나씩 반복하고 있습니다.

for line in $(cat output_drives_list); do
            rsync -ah --progress --delete mountpoints/SOURCE/ mountpoints/$line/
        done

저는 이 프로세스를 최적화하여 USB 대역폭 사용을 최대화하고 단일 드라이브의 쓰기 속도에 병목 현상을 방지하려고 노력하고 있습니다.

rsync와 같은 작업을 수행할 수 있지만 여러 출력 디렉터리를 사용하여 한 번에 모든 출력 드라이브에 쓰고 입력에서 한 번만 읽을 수 있습니까?

나는 이 중 일부가 이미 시스템 캐시에 의해 처리된 것으로 추측하지만 이것은 단지 읽기에 최적화되어 있습니다.

여러 rsync 프로세스를 병렬로 실행하면 쓰기 속도가 최적화될 수 있지만 읽기 속도가 느려질 수도 있다는 우려도 있습니다.

병렬로 복사할 때 단일 읽기에 신경써야 합니까?

답변1

테스트할 수는 없지만 백그라운드에서 더 많은 프로세스를 시작하면 해결책이 될 수 있습니다.

START=$(date +%s)
for line in $(cat output_drives_list); do
    rsync -ah --progress --delete mountpoints/SOURCE/ mountpoints/$line/ &
done
jobs # get a list of running jobs
wait # wait for all processes to complete
sync
echo It took: $(( $(date +%s)-START )) seconds

편집: date"벤치마킹" 언급 후에 -stuff를 추가했습니다.

답변2

읽기 속도는 대상 쓰기의 가장 큰 병목 현상이 됩니다.

원본 디스크의 크기에 따라 @hschou가 위에서 설명한 것처럼 복사기에서 RAM 디스크를 만들고 그 안에 파일을 캐시한 다음 동시 프로세스를 사용하여 거기에서 여러 대상으로 복사하려면 어떻게 해야 합니까?

메모리를 유지하는 "실제" RAM 디스크를 만드는 방법

RAM 읽기는 RAM 디스크 중 일부가 로컬 물리적 디스크로 교체되는 경우에도 플래시 또는 SSD에 대한 다중 무작위 액세스보다 항상 빠릅니다.

관련 정보