Как пользоваться rsync
Во всех примерах скачиваем файл поверх существующей копии. Первое скачивание выглядит так:
time rsync --progress "$REMOTE_ISO" local.iso
local.iso
2940602368 100% 31.61MB/s 0:01:28 (xfer#1, to-check=0/1)
sent 30 bytes received 2940961422 bytes 32859904.49 bytes/sec
total size is 2940602368 speedup is 1.00
real 1m29.065s
user 0m32.420s
sys 0m12.330s
Пояснение к опциям:
-z
- используем сжатие--compress-level 9
- максимальный уровень сжатия, задействуем процессор по максимум, разгружая канал.--block-size=40507
- размер блока для сравнения-c
- проверка checksum блоков вместо времени изменения файла.
Параметры | Не используем сжатие | Используем сжатие ( -z --compress-level 9 ) |
---|---|---|
Не используем блоки | rsync "$REMOTE_ISO" local.iso real 1m41.437s user 0m11.340s sys 0m3.880s Вышло даже медленее, чем в первый раз. |
rsync -z --compress-level 9 "$REMOTE_ISO" local.iso real 1m51.406s user 0m11.530s sys 0m3.830s Вышло ещё меделеннее. Это потому что машины находятся в локальной сети. В случае с узким каналом, сжатие ускорит процесс. |
Используем блоки ( --block-size=40507 -c ) |
rsync --block-size=40507 -c "$REMOTE_ISO" local.iso real 0m22.893s user 0m5.170s sys 0m0.820s Без сжатия получим 22 сек вместо полутора минут. Неплохо. |
rsync --block-size=40507 -c -z --compress-level 9 "$REMOTE_ISO" local.iso real 0m26.553s user 0m5.340s sys 0m0.590s В локальной сети сжатие - лишняя вычислительная нагрузка, даже если использовать блоки. |