rsync уже сжатый файл

rsync уже сжатый файл

будет ли rysnc -z иметь какие-либо преимущества в сжатии, если входной файл уже сжат gzip? У меня есть большой сжатый файл размером 100 ГБ для отправки по сети между серверами, и он постоянно терпел неудачу (сломанный канал) через разное время. Интересно, стоит ли мне попробовать флаг -z.

решение1

Сжатие при передаче уже сжатого файла обычно не стоит процессорного времени. Есть оговорки. В процессе сравнения двух файлов использование rsync со сжатием может ускорить сравнение хэшей данных.

Если вы хотите синхронизировать только сжатые версии больших файлов на нескольких системах, одно место, где можно поискать, — это определенные сборки gzip. В системе Ubuntu я получаю:

$ gzip -h
Использование: gzip [ПАРАМЕТР]... [ФАЙЛ]...
Сжимать или распаковывать ФАЙЛЫ (по умолчанию сжимать ФАЙЛЫ на месте).

Обязательные аргументы для длинных опционов обязательны и для коротких опционов.

  -c, --stdout записывать в стандартный вывод, сохранять исходные файлы без изменений
  -d, --decompress распаковать
  -f, --force принудительно перезаписать выходной файл и сжать ссылки
  -h, --help оказать эту помощь
  -l, --list вывести список содержимого сжатого файла
  -L, --license отобразить лицензию на программное обеспечение
  -n, --no-name не сохранять и не восстанавливать исходное имя и временную метку
  -N, --name сохранить или восстановить исходное имя и временную метку
  -q, --quiet подавить все предупреждения
  -r, --recursive рекурсивно работать с каталогами
  -S, --suffix=SUF использовать суффикс SUF для сжатых файлов
  -t, --test проверить целостность сжатого файла
  -v, --verbose подробный режим
  -V, --version отобразить номер версии
  -1, --fast сжимать быстрее
  -9, --best сжимать лучше
    --rsyncable Создать архив, совместимый с rsync

Если ФАЙЛ отсутствует или равен -, читать стандартный ввод.

Сообщайте об ошибках по адресу .

Обратите внимание на эту --rsyncableопцию? Она избегает использования адаптивного сжатия, так что только небольшие части сжатого файла изменяются, когда есть только небольшое изменение в исходном файле. Остальная часть двоичных данных не изменяется, так что rsync не нужно будет повторно передавать все это. Страница руководства указывает, что эта опция не должна увеличивать размер сжатого файла более чем на 1% по сравнению с отсутствием опции, и что gunzip не заметит разницы.

У меня есть файл sql размером 468 МБ, который я сжал до 57 МБ с помощью --rsyncableопции. Я переношу этот файл в свою локальную систему. Затем я добавляю однострочный комментарий к исходному файлу sql на удаленной системе и повторно сжимаю с помощью опции rsyncable.

$ rsync -avvz --progress -h fooboo:foo.sql.gz .
открытие соединения с помощью ssh fooboo rsync --server --sender -vvlogDtprz . foo.sql.gz
получение списка файлов ...
1 файл для рассмотрения
дельта-передача включена
foo.sql.gz
      59,64M 100% 43,22MB/s 0:00:01 (xfer#1, to-check=0/1)
всего: совпадений=7723 hash_hits=9468 false_alarms=0 data=22366

отправлено 54,12 Кбайт получено 22,58 Кбайт 17,05 Кбайт/сек
общий размер 59.64M ускорение 777.59

Неплохо. Rsync пришлось передать лишь небольшой фрагмент нового сжатого файла.

решение2

rsync не сделает уже сжатый файл значительно меньше во время передачи.

Маловероятно, что ваши неудачные передачи будут исправлены путем добавления флага -z. Я бы посоветовал попробовать rsync для несжатых файлов. Затем rsync сожмет их на лету. Тогда у вас будет преимущество в том, что если исходный файл изменится и вам понадобится rsync снова, будут переданы только измененные байты. Если вы измените сжатый файл, rsync, скорее всего, придется повторно передать его целиком. Подробнее см. здесь:

http://beeznest.wordpress.com/2005/02/03/rsyncable-gzip/

решение3

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

Вот руководство для Linux:http://www.techiecorner.com/107/как-разделить-большой-файл-на-несколько-меньших-файлов-linux/ И для Windows:http://www.online-tech-tips.com/computer-tips/how-to-split-a-large-file-into-multiple-smaller-pieces/

Связанный контент