multithreaded parallel rsync

find -type d | xargs -I '{}' -P 10 -n1 rsync -a --no-r remote:path/'{}'/ '{}'/

rsync args:
--no-r No recursive

xargs args:
-P 10 Run up to 10 processes at a time.
-n 1 Use 1 argument per command line.

Комментарии

внезапно не работает

внезапно не работает конструкция find -type d | xargs -I '{}' -P 10 -n1 rsync -a --no-r  '{}'/ rsync://remote-server/'{}'/ из оригинальной заметки - т.е. просто НЕ работает. (выпадает с ошибками из-за невозможности создать каталоги на удаленной машине, хотя если убрать --no-r - все создается) кто что может подсказать?

я додумался только до следующего:
1) создаем структуру каталогов
rsync -aIRvv -f"+ */" -f"- *" /dir1 /dir2 /dir3 rsync://remote-host/bucket
2) заливаем параллельно жирные файлы (собственно даёт нужный эффект)
find -size +1000k | xargs -I '{}' -P 10 -n1 rsync -a --no-r '{}' rsync://remote-host/bucket/
3) заливаем мелкие файлы (тоже параллельно, но по сути это только ради того чтоб не рисковать разницей в измерении размеров файлов между find и rsync)
find -size -1000kb -size 1000k | xargs -I '{}' -P 10 -n1 rsync -a --no-r '{}' rsync://remote-host/bucket/

кто-что подскажет?

Улучшеная

Улучшеная версия:
https://github.com/abolychev/prsync