find xargs
find ${source_dir} -mindepth 1 -maxdepth 1 | xargs -P 24 -I {} rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --log-file=<logfile_path> -quiet -e ssh {} <destination_user>@<destination_instance>:<destination_dir>
ex. find /var -mindepth 1 -maxdepth 1 /var/cron /var/empty /var/at ... rsync ... -e ssh /var/cron <destination_user>@<destination_instance>:/var rsync ... -e ssh /var/empty <destination_user>@<destination_instance>:/var rsync ... -e ssh /var/at <destination_user>@<destination_instance>:/var
スラッシュなし:rsync -av /SRC/A /DEST/
一方、スラッシュなしで/SRC/Aと指定した場合、ディレクトリA本体を表わします。
したがって、この場合は、”ディレクトリAをどこへ置くのか?”と考えて、受信先のパスを選べばいいわけです。
ここでディレクトリAを置きたいのは/DEST/です。だからそのように指定しています。
このように、この構文はディレクトリ本体を操作しているイメージです。
...
送信元の末尾/有無の違い
受信先の末尾/有無はどちらもでいい
ls -1 /path/to/src | xargs -I {arg} -P 6 -n 1 rsync -avh /path/to/src/{arg} /path/to/dests -1 エルではなく1 xargs に渡すために 1行に1ファイル(フォルダ)出力
↓パイプ
-I {arg} で引数を置換する文字列を {arg} として
-P 6 で並列数を6として指定して
-n 1 で渡される引数の数を念の為1個に限定して
rsync -avh /path/to/src/{arg} /path/to/dest {arg}を引数で置換して実行
2.実行されるコマンド内容を表示させる
xargsで指定されたコマンドの実行内容を表示させるには、「-t」オプションを付与する。コマンド1 | xargs -t コマンド2
https://bacchi.me/bash/grouping/
find . \( -type d -printf "%p/\n" , -type f -print \)https://unix.stackexchange.com/questions/4847/make-find-show-slash-after-directories
${変数名//置換前文字列/置換後文字列} → 文字列置換(マッチしたものすべて)
[rsync] 同期を並列に行う - R.A. Epigonos et al. 2010
https://superuser.com/questions/353383/parallelizing-rsync 2011