rsync --весь -файл против дельты -протокол передачи Использование ЦП и скорость копирования

Проще всего это сделать с помощью доморощенного:

установить доморощенный:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

обновить git:

brew upgrade git
1
07.02.2021, 11:18
2 ответа

Для одного файла вы не получите никакой оптимизации пропускной способности, равно как и с расчетом использования многоядерности, но когда у вас больше файлов, особенно тысячи, некоторые из которых просто нуждаются в обновлениях, вы можете использовать xargs, как показано ниже

ls /your/local/folder/ | xargs -n1 -P4 -I% rsync -Pa % ursrv.com:/remote/folder/

Эта командная строка выведет список всех папок/файлов, а затем запустит 4 экземпляра rsync с входным аргументом в виде папки или файла. Это не является многоядерным напрямую, но будет запускать несколько экземпляров rsync, что, несомненно, намного эффективнее загрузит ваш процессор.

0
18.03.2021, 22:32

Первоначально пользователь создает отдельный файл с случайными данными на исходном сервере:

Delta Transfer uses an algorithm for updating a file on one machine to be identical to a file on another remote machine. The algorithm identifies parts of the source file which are identical to some parts of the destination file, and only sends those parts which cannot be matched in this way. Effectively, the algorithm computes a set of difference without having both files on the same machine. Typically, Delta Transfer works very well when the two machines are connected by a low-bandwidth, high-latency communications link. In this case, the connection between the two machines is the major bottleneck of the whole system. By dramatically reducing the amount of the bytes to be sent over the link, the efficiency of the operations would be greatly improved. -- SourceAnywhere

Пользователь выполняет передачу без соответствующего файла на удаленный сервер, поэтому при копировании файла без синхронизации первоначальная передача с --whole-fileболее эффективна.


Чтобы обменять циклы процессора на нагрузку сети, я бы предложил вариант сжатия -z. Также можно настроить тип и уровень сжатия :

.
--compress-choice=--compress-level=
зстд 0 -9
лз4 0 -9
zlibx 0 -9
злиб 0 -9

В поддерживаемых файловых системах общие данные, в отличие от случайных данных пользователя, можно сохранить в виде разреженного файла с установленным переключателем --sparse, затем при последующем rsync установить переключатель --inplaceдля записи на место -.


Добавление переключателя --updateпропускает более новые файлы на приемнике, экономя лишние операции записи.


Переключатель --appendпозволяет пользователю добавлять данные в более короткие файлы.


Указанные ниже настройки могут помочь увеличить общую детализацию во время тестирования:

--verbose, -v            increase verbosity
--stats                  give some file-transfer stats
--human-readable, -h     output numbers in a human-readable format
--progress               show progress during transfer
0
18.03.2021, 22:32

Теги

Похожие вопросы