バックアップ/復元機能なしで、1つの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}/%/