Проще всего это сделать с помощью доморощенного:
установить доморощенный:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
обновить git:
brew upgrade git
Для одного файла вы не получите никакой оптимизации пропускной способности, равно как и с расчетом использования многоядерности, но когда у вас больше файлов, особенно тысячи, некоторые из которых просто нуждаются в обновлениях, вы можете использовать xargs, как показано ниже
ls /your/local/folder/ | xargs -n1 -P4 -I% rsync -Pa % ursrv.com:/remote/folder/
Эта командная строка выведет список всех папок/файлов, а затем запустит 4 экземпляра rsync с входным аргументом в виде папки или файла. Это не является многоядерным напрямую, но будет запускать несколько экземпляров rsync, что, несомненно, намного эффективнее загрузит ваш процессор.
Первоначально пользователь создает отдельный файл с случайными данными на исходном сервере:
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