scp를 사용하여 아래의 쉘 스크립트와 GNU 병렬을 사용하여 파일을 병렬로 복사했지만 제대로 작동합니다.아래의 쉘 스크립트에서 scp 대신 rsync를 사용하여 파일을 복사하는 방법은 무엇입니까?
scp
대신 아래 쉘 스크립트에서 rsync
을 어떻게 사용할 수 있는지 잘 모르겠습니다. 나는 scp
에 비해 전송 속도면에서 rsync
이 더 나은 성능을 보일 것인지를 판단하려고합니다. 내가 machineA
내 아래에 쉘 스크립트를 실행하고 있습니다로
내가 machineA
에 machineB
및 machineC
에서 파일을 복사하고 -
다음은 내 문제의 설명이다.
파일이 그 다음 내가 machineC
에서 같은 파일을 복사하려고합니다 machineB
에 존재하지 않는 경우 나, machineB
처음부터 파일을 복사하려고합니다 그래서 machineB
는 다음 확실히 machineC
에가 있어야에서이없는 경우.
GNU 병렬 라이브러리를 사용하여 파일을 병렬로 복사하고 있는데 문제가 없습니다. 현재 PRIMARY와 SECOND 모두 5 개의 파일을 병렬로 복사 중입니다.
#!/bin/bash
export PRIMARY=/test01/primary
export SECONDARY=/test02/secondary
readonly FILERS_LOCATION=(machineB machineC)
export FILERS_LOCATION_1=${FILERS_LOCATION[0]}
export FILERS_LOCATION_2=${FILERS_LOCATION[1]}
PRIMARY_PARTITION=(550 274 2 546 278) # this will have more file numbers
SECONDARY_PARTITION=(1643 1103 1372 1096 1369 1568) # this will have more file numbers
export dir3=/testing/snapshot/20140103
do_Copy() {
el=$1
PRIMSEC=$2
scp [email protected]$FILERS_LOCATION_1:$dir3/new_weekly_2014_"$el"_200003_5.data $PRIMSEC/. || scp [email protected]$FILERS_LOCATION_2:$dir3/new_weekly_2014_"$el"_200003_5.data $PRIMSEC/.
}
export -f do_Copy
parallel --retries 10 -j 5 do_Copy {} $PRIMARY ::: "${PRIMARY_PARTITION[@]}" &
parallel --retries 10 -j 5 do_Copy {} $SECONDARY ::: "${SECONDARY_PARTITION[@]}" &
wait
echo "All files copied."
을 rsync
내 위의 scp
명령을 대체 할 수있는 방법이 있나요하지만, 난 여전히 모두 동시에 PRIMARY
및 SECONDARY
병렬로 5 개 개의 파일을 복사 할 -
아래 내가 가진 내 쉘 스크립트는 무엇입니까?
그건 바보 같은 요구 사항입니다. 귀하의 작업은 I/O 경계이며 CPU 경계는 아닙니다. 병렬 처리를 추가하면 혼잡이 야기됩니다. – tripleee
@tripleee 당신은 맞을지도 모르지만 나는 여전히보고 싶었다 - 파일을 전송하는 동안'scp'와'rsync' 사이에 어떤 차이가 있습니까? – john
목적지에 파일이 이미 존재한다면'rsync'가 더 효율적일 것입니다. 그렇지 않으면 오버 헤드가 추가됩니다. – tripleee