Я хотел сделать резервную копию пути с компьютера в моей сети на другой компьютер в том же сеть по линии 100 Мбит / с. Для этого я сделал
dd if=/local/path of=/remote/path/in/local/network/backup.img
, который дал мне очень низкую скорость передачи данных по сети от 50 до 100 кБ / с, что заняло бы вечность. Поэтому я остановил его и решил попробовать сжать его на лету, чтобы сделать его намного меньше, чтобы сумма для передачи была меньше. Так я и сделал
dd if=/local/path | gzip > /remote/path/in/local/network/backup.img.gz
Но теперь я получаю что-то вроде скорости передачи данных по сети 1 МБ / с, что в 10-20 раз быстрее. Заметив это, я протестировал это на нескольких путях и файлах, и это всегда было одинаково.
Почему конвейер с dd
через gzip
также увеличивает скорость передачи в большой раз вместо того, чтобы просто уменьшить длину потока в байтах в большой раз? Я ожидал даже небольшого уменьшения скорости передачи вместо этого из-за более высокого потребления ЦП при сжатии, но теперь я получаю двойной плюс. Не то чтобы я недоволен, но мне просто интересно. ;)