In rsync
, -z
comprime os dados do arquivo durante a transferência.
Se bem entendi, -z
comprima os arquivos antes da transferência e descompacte-os após a transferência. O tempo reduzido durante a transferência devido à compactação supera o tempo para compactação e descompactação?
A resposta à pergunta depende se eu faço backup em um disco rígido externo via usb (2.0 ou 3.0) ou em um servidor por ssh pela internet?
man rsync
que, de fato, existe uma lista de sufixos de arquivo que não serão compactados nem com-z
(consulte--skip-compress
).Respostas:
É uma pergunta geral. A compactação e descompactação nos pontos de extremidade melhoram a largura de banda efetiva de um link?
A largura de banda efetiva (percebida) de um link que compacta e descompacta nos pontos de extremidade é uma função de:
A função é descrita neste gráfico 3D, que você pode consultar para sua situação específica:
O gráfico é originado no artigo Compression Tools Compared 2005 de http://www.linuxjournal.com/ .
fonte
Se você tem uma conexão muito lenta (pense em GPRS), definitivamente deseja compactar seus dados o máximo possível, caso contrário, sua conexão diminuirá a velocidade.
Se você possui uma CPU muito lenta e uma conexão rápida (como um dispositivo de rede incorporado), normalmente não deseja compactar seus dados; caso contrário, sua CPU diminuirá a velocidade.
fonte
Depende de quão compactáveis são seus dados e do poder de processamento de sua fonte e destino. Um backup completo do disco, na minha experiência, comprimirá cerca de 30 a 50% do seu tamanho original; portanto, vale a pena tentar. Caso contrário, não se preocupe com a compressão. Pode valer a pena testar sua taxa de compactação
pigz -c <your file> | wc -c
e comparar o tamanho retornado com o tamanho original.fonte
Sim, a velocidade da conexão determina se as coisas aceleram. Será uma sobrecarga apenas para backup USB, porque não os discos inflam os dados, mas o processo que os grava. Portanto, a mesma máquina que lê e esvazia, também precisa inflar e escrever. Acho que o Rsync ainda é dois processos, mas sua memória para entregar dados de um processo para outro é rápida o suficiente e a CPU precisa de mais tempo para compactá-los (enquanto lê na mesma memória que depois os entrega :).
A compactação ajuda apenas quando você tem um remetente e um receptor rsync e uma rede mais lenta no meio. 1Gbit já pode ser rápido o suficiente quando você tem um NAS local, por exemplo, 10Gbit já é a velocidade SATA bruta. Portanto, a compactação só é necessária quando você possui 100Mbit ou menos de conectividade e só faz sentido quando os dados compactados são compactáveis.
Acho que o rsync pode perceber que ele não roda em duas máquinas, mas uma e ignora a compactação, mas não tem certeza.
fonte
tl; dr Nos links de transferência lenta, comprima, caso contrário não. Abaixo está um teste de velocidade de compressão, um link para uma ferramenta de conversão de largura de banda e algumas informações.
O uso de compressão com
rsync
apenas acelerará as coisas se o link intermediário for "lento o suficiente", ou seja, se a máquina em uma extremidade for capaz de produzir um fluxo de dados compactados rápido o suficiente para saturar o link de comunicação.Então, qual é o link mais lento no qual devo usar a compactação para obter alguma coisa?
A seguir, um teste não científico, que mostrará a rapidez com
gzip
que os dados podem ser produzidos e o que isso significa para você compactar as transferências em massa da rede em geral.Os dados de entrada mudarão bastante o resultado do teste . Estou usando um arquivo normal não compactado (!) No meu computador, que pode ser representativo do tipo de dados que eu normalmente transfiro pelas redes. Usar
/dev/zero
(produzir zeros ilimitados) seria enganoso, pois um fluxo de zeros seria muito fácil de compactar e/dev/random
seria enganoso pelo motivo oposto. Então, em vez disso, uso um arquivo tar do meu$HOME/local
diretório, que contém o software que instalei no meu diretório$HOME
. O arquivo é descompactado por si só, mas contém uma mistura de arquivos binários, pequenos arquivos compactados e arquivos de origem / texto, e eu o compactaria com a configuração padrão,gzip
pois diminuiria 67% de 64 MiB para 22 MiB.Faço isso algumas vezes para ter uma ideia de qual pode ser a média e chega a cerca de 7800000 bytes / s.
Então eu uso uma calculadora de largura de banda de rede para ver em que isso se converte. Nesse caso em particular, é um pouco menor que a capacidade de um link com fio "100Mb Ethernet", um pouco mais rápido que um link de internet "VDSL Download", um pouco mais rápido que um link sem fio "802.11 [a / g]" e em algum lugar entre "Bluetooth v3.0" (mais lento) e "USB 2.0" (mais rápido).
Isso significa que, se eu estiver usando a compactação em algo mais rápido que isso, a compactação provavelmente diminuirá a transferência do arquivo.
rsync
pode não estar usando exatamente as mesmas bibliotecas quegzip
para fazer a compactação, mas as opções acima dariam uma dica, pelo menos.rsync
faz mais do que comprimir, como você sabe, e o aumento real da velocidade vem apenas da transferência de [bits de] arquivos que foram alterados.Na minha própria experiência, o uso de compressão com
rsync
tornou-se cada vez menos benéfico nos últimos 10 anos, com o aumento da largura de banda das redes (onde estou).Para fazer backups incrementais, eu recomendaria definitivamente investigar a
--link-dest
opção (isso não tem nada a ver com o que é transferido, apenas com o modo como as coisas são armazenadas no destino). Além disso, se você estiver fazendo isso por SSH, não use compactação se a sua conexão SSH já estiver compactada e comprima apenas conexões SSH (túneis etc.) que estão em links lentos, pelos mesmos motivos acima.fonte