방금 한 세트를 다른 세트로 공급할 수있는 백업 / 복원 기능이없는 한 NAS에서 다른 NAS로 여러 TB를 이동해야하는 비슷한 문제가있었습니다.
따라서이 스크립트는 각 디렉토리마다 1 개의 rsync를 실행하도록 작성했습니다. 소스 디렉토리를 나열 할 수 있는지에 달려 있지만 (ARG 3을 피하십시오) 파일과 디렉토리를 적절한 수준으로 복사 한 비 재귀 rsync로 해당 단계를 설정할 수 있다고 생각합니다.
또한 프로세서 수에 따라 실행할 rsync 수를 결정하지만 조정해야 할 수도 있습니다.
다른 가능한 옵션은 --list-only 모드에서 rsync를 실행하는 것입니다.
그러면 업데이트해야 할 모든 파일이 제공됩니다. 그런 다음 xargs를 사용하여 진행 한 rsync 수를 관리하는 경우 목록의 각 파일에 대해 1 rsync를 실행하면 매우 우아 할 수 있습니다. 실제로 여기 내 작은 스크립트보다 더 우아한 솔루션 일 것입니다 ...
#! /bin/bash
SRC_DIR=$1
DEST_DIR=$2
LIST=$3
CPU_CNT=`cat /proc/cpuinfo|grep processor |wc -l`
# pseudo random heuristic
let JOB_CNT=CPU_CNT*4
[ -z "$LIST" ] && LIST="-tPavW --exclude .snapshot --exclude hourly.?"
echo "rsyncing From=$SRC_DIR To=$DEST_DIR DIR_LIST=$LIST"
mkdir -p /{OLD,NEW}_NAS/home
[ -z "$RSYNC_OPTS" ] && RSYNC_OPTS="-tPavW --delete-during --exclude .snapshot --exclude hourly.?"
cd $SRC_DIR
echo $LIST|xargs -n1 echo|xargs -n1 -P $JOB_CNT -I% rsync ${RSYNC_OPTS} ${SRC_DIR}/%/ ${DEST_DIR}/%/