Многопоточный RSYNC

Как известно, RSYNC работает в 1 поток. Часто это является узким местом в скорости передачи файлов. Ниже предоставляю решения для передачи файлов с локального компьютера на удаленный сервер. В конце статьи будет сссылка на решение и для папок.

ls -p | grep -v / | xargs -I '{}' -P 5 -n1 rsync -av --no-links --partial --append-verify /path/local/files/'{}' --exclude="lost+found" root@server.example.org:/path/to/folder/

Разберем подробнее

ls -p | grep -v /

выводит имена только файлов в каталоге, каждое имя с новой строки, без дополнительной информации.

xargs запускает для каждого файла команду rsync с параметром ‘{}’ = имя файла.

-P 5

количество одновременно запущенных комманд (потоков rsync), то есть одновременно будут запущена передача 5-ти файлов. Каждый файл передается отдельно.

Обратите внимание на ‘/’ в конце путей — это важный момент.

Если нужно передавать в несколько потоков файлы/каталоги — решение есть на странице http://linuxsnippets.net/en/snippet/multithreaded-parallel-rsync

 

 

Добавить комментарий