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