Я використовую rsync сценарій для синхронізації даних на одному хості з даними на іншому хості. Дані мають численні файли невеликого розміру, які сприяють майже 1,2 ТБ.
Для синхронізації цих файлів я використовував rsyncкоманду наступним чином:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
Зміст proj.lst такий:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
Як тест, я взяв два з цих проектів (8,5 ГБ даних) і виконав команду вище. Будучи послідовним процесом, він потребує 14 хвилин 58 секунд для завершення. Отже, на 1,2 ТБ даних знадобилося б кілька годин.
Якби я міг кілька rsyncпаралельних процесів ( з використанням &, xargsабо parallel), це дозволить заощадити свій час.
Я спробував команду нижче з parallel(після cding до каталогу джерел), і на виконання було потрібно 12 хвилин 37 секунд:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
Це повинно було зайняти в 5 разів менше часу, але це не так. Я думаю, я кудись помиляюся.
Як я можу запустити кілька rsyncпроцесів, щоб скоротити час виконання?
rsyncs - наш перший пріоритет.
rsyncs паралельно є основним фокусом зараз.