Eu queria fazer o backup de um caminho de um computador na minha rede para outro computador na mesma rede em uma linha de 100 Mbit / s. Por isso eu fiz
dd if=/local/path of=/remote/path/in/local/network/backup.img
o que me proporcionou uma velocidade de transferência de rede muito baixa, algo em torno de 50 a 100 kB / s, o que levaria uma eternidade. Então eu parei e decidi tentar compactá-lo em tempo real para torná-lo muito menor, para que a quantidade a transferir seja menor. Então eu fiz
dd if=/local/path | gzip > /remote/path/in/local/network/backup.img.gz
Mas agora eu tenho algo como 1 MB / s de velocidade de transferência de rede, então um fator de 10 a 20 mais rápido. Depois de perceber isso, testei isso em vários caminhos e arquivos, e sempre foi o mesmo.
Por que a tubulação dd
através de gzip
também aumentar as taxas de transferência por um fator grande em vez de reduzir somente o ByteLength do fluxo por um fator de grande porte? Eu esperava até uma pequena redução nas taxas de transferência, devido ao maior consumo de CPU durante a compactação, mas agora recebo uma vantagem dupla. Não que eu não esteja feliz, mas estou apenas pensando. ;)
dd
saída é de 1 MB / s ... diretamente no canal em espera gzip
. Tem muito pouco a ver com o tamanho do bloco.