Я використовую 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
(після cd
ing до каталогу джерел), і на виконання було потрібно 12 хвилин 37 секунд:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
Це повинно було зайняти в 5 разів менше часу, але це не так. Я думаю, я кудись помиляюся.
Як я можу запустити кілька rsync
процесів, щоб скоротити час виконання?
rsync
s - наш перший пріоритет.
rsync
s паралельно є основним фокусом зараз.