In rsync
, -z
сжимает данные файла во время передачи.
Если я правильно понимаю, -z
сожмите файлы перед передачей, а затем распакуйте их после передачи. Сокращается ли время при передаче из-за сжатия, превышающего время сжатия и распаковки?
Зависит ли ответ на вопрос, сделаю ли я резервную копию на внешний жесткий диск через USB (2.0 или 3.0) или на сервер через ssh через Интернет?
man rsync
что на самом деле существует список файловых суффиксов, которые не будут сжаты даже с помощью-z
(см.--skip-compress
).Ответы:
Это общий вопрос. Улучшает ли сжатие и декомпрессия в конечных точках эффективную полосу пропускания канала?
Эффективная (воспринимаемая) полоса пропускания канала, выполняющего сжатие и декомпрессию в конечных точках, является функцией:
Функция описана на этом трехмерном графике, к которому вы можете обратиться для вашей конкретной ситуации:
График взят из статьи Compression Tools Compared 2005 от http://www.linuxjournal.com/ .
источник
Если у вас очень медленное соединение (например, GPRS), вы определенно хотите максимально сжать ваши данные, иначе ваше соединение замедлит работу.
Если у вас очень медленный процессор и быстрое соединение (например, встроенное сетевое устройство), вы обычно не хотите сжимать ваши данные, иначе ваш процессор замедлит работу.
источник
Зависит от того, насколько сжимаемы ваши данные и от вычислительной мощности вашего источника и места назначения. По моему опыту, полная резервная копия диска будет сжата до 30-50% от ее первоначального размера, поэтому, возможно, стоит попробовать. В противном случае не беспокойтесь о сжатии. Возможно, стоит проверить степень сжатия
pigz -c <your file> | wc -c
и сравнить возвращаемый размер с исходным размером.источник
Да, скорость соединения определяет, ускоряет ли скорость. Это будет связано только с резервным копированием через USB, потому что не диски раздувают данные, а процесс, который записывает данные. Так что та же самая машина, которая читает и выкачивает ее, должна надувать и записывать ее тоже. Я думаю, что Rsync - это еще два процесса, но ваша память для передачи данных из одного процесса в другой достаточно быстра, и процессору требуется больше времени для его сжатия (при чтении его в ту же память, которая впоследствии передает его :).
Сжатие помогает только тогда, когда у вас есть rsync отправителя и получателя и какая-то более медленная сеть между ними. Например, 1 Гбит может быть достаточно быстрым, если у вас есть локальный NAS, 10 Гбит - это уже сырая скорость SATA. Таким образом, сжатие необходимо только тогда, когда у вас есть подключение 100 Мбит или меньше, и это имеет смысл только тогда, когда сжатые данные сжимаемы.
Я думаю, что rsync может заметить, что он работает не на двух машинах, а на одной и пропускает сжатие, но не уверен.
источник
tl; dr По медленным ссылкам передачи, сжимать, иначе нет. Ниже приведен тест скорости сжатия, ссылка на инструмент преобразования пропускной способности и некоторая информация.
Использование сжатия с
rsync
ускорит работу только в том случае, если промежуточная линия связи «достаточно медленная», т. Е. Если машина на одном конце способна создать поток сжатых данных достаточно быстро, чтобы насытить канал связи.Итак, какова самая медленная связь, на которой я должен использовать сжатие, чтобы получить что-нибудь?
Ниже приведен очень ненаучный тест, который покажет, как быстро
gzip
можно создавать данные, и что это означает для того, следует ли вообще сжимать объемные передачи в сети.Входные данные сильно изменят результаты теста . Я использую несжатый (!) Обычный файл на моем компьютере, который может представлять тип данных, которые я обычно передаю по сети. Использование
/dev/zero
(создание неограниченных нулей) будет вводить в заблуждение, поскольку поток нулей будет очень легко сжать, а использование/dev/random
будет вводить в заблуждение по противоположной причине. Поэтому вместо этого я использую tar-файл своего$HOME/local
каталога, который содержит программное обеспечение, которое я установил в моем$HOME
. Файл сам по себе не сжат, но содержит смесь двоичных файлов, небольших сжатых файлов и исходных / текстовых файлов, и я бы сжал его с настройками по умолчанию, так какgzip
он уменьшится на 67% с 64 МБ до 22 МБ.Я делаю это несколько раз, чтобы понять, каково среднее значение, и оно достигает 7800000 байт / с.
Затем я использую калькулятор пропускной способности сети, чтобы увидеть, во что это конвертируется. В данном конкретном случае он оказывается чуть менее пропускной способности проводной линии связи «100 Мбит Ethernet», чуть быстрее, чем интернет-восходящая линия связи «VDSL Download», немного быстрее, чем беспроводная связь «802.11 [a / g]», и где-то еще. между «Bluetooth v3.0» (медленнее) и «USB 2.0» (быстрее).
Это означает, что если я использую сжатие поверх чего-либо более быстрого , сжатие, скорее всего, замедлит передачу файла.
rsync
не может быть с помощью точных же библиотек , какgzip
сделать сжатие, но выше даст вам немного намека , по крайней мере.rsync
хотя, как вы знаете, он делает больше, чем просто сжатие, и реальное увеличение скорости происходит только за счет передачи [битов] файлов, которые изменились.По моему собственному опыту, использование сжатия с использованием
rsync
стало менее и менее выгодным за последние 10 лет или около того, так как пропускная способность сетей увеличилась (где я нахожусь).Для создания инкрементных резервных копий я бы определенно рекомендовал исследовать эту
--link-dest
опцию (это не имеет ничего общего с тем, что передается, только с тем, как вещи хранятся в целевом объекте). Кроме того, если вы делаете это по SSH, не используйте сжатие, если ваше SSH-соединение уже сжато, и сжимайте только SSH-соединения (туннели и т. Д.) По медленным каналам по тем же причинам, что и выше.источник