Você não pode "compactar a coisa toda", pois o gzip compacta apenas um arquivo, você pode criar um arquivo tar e compactá-lo para "compactar a coisa toda", mas perderia a capacidade do rsync de copiar apenas o arquivo modificado.
Portanto, a questão é: é melhor armazenar o arquivo que eu preciso para o rsync gziped ou confiar na opção -z do rsync.
A resposta é provavelmente que você não deseja que o arquivo seja descompactado no seu servidor? Eu acho que sim, então eu não vejo como você pode gerenciar o arquivo gzip antes de fazer o rsync.
Pode ser que você não precise da capacidade do rsync de copiar apenas o arquivo modificado? Nesse caso, por que usar o rsync em vez de fazer um scp de um arquivo tar.gz contendo suas coisas?
De qualquer forma, para responder à pergunta, o rsync gzip será um pouco menos eficiente que o arquivo gzip com o gzip. Por quê ? como o rsync fará o gzip dos dados em pedaços, então um conjunto menor de dados será usado para criar a tabela que o gzip usa para fazer a compactação, um conjunto maior de dados (o gzip usaria o arquivo inteiro de uma vez) para obter uma melhor tabela de compactação. Mas a diferença será muito pequena na maioria dos casos, mas em casos muito raros, a diferença pode ser mais importante (se você tiver um arquivo muito grande com um padrão muito longo repetindo muito tempo no arquivo, mas longe um do outro) (Isso é um exemplo muito simplificado)
Se você estiver copiando os dados apenas uma vez, o rsync não será uma grande vitória por si só. Se você gosta do gzip (ou tar + gzip, já que possui muitos arquivos), tente algo como:
Isso obteria a compactação que você estava procurando e apenas copiaria diretamente sem envolver o rsync.
fonte
O @radius, um pequeno detalhe a escolher sobre como
gzip
funciona -gzip
é um algoritmo de compressão baseado em bloco e bastante simples. O arquivo inteiro não é considerado para a tabela de compactação - apenas cada bloco. Outros algoritmos podem usar todo o conteúdo do arquivo e há alguns que usam o conteúdo de vários blocos ou mesmo de tamanhos variados. Um exemplo fascinante élrzip
o mesmo autor dersync
!O
gzip
algoritmo do skinny on .Portanto, em resumo, o uso
rsync -z
provavelmente produzirá a mesma compactação que ogzip
primeiro - e se você estiver fazendo uma transferência diferencial, melhor por causa dorsync
algoritmo diferente.Dito isso, acho que descobriremos que as
scp
batidas fáceis e regularesrsync
para transferências não diferenciais - porque terão muito menos sobrecarga do quersync
o algoritmo (que usaria descp
qualquer maneira!)Se sua rede se tornar um gargalo, convém usar a compressão no fio.
Se seus discos são o gargalo, é melhor fazer o streaming em um arquivo compactado. (por exemplo,
netcat
de uma máquina para a outra, transmitindo paragzip -c
)Normalmente, se a velocidade é fundamental, compactar um arquivo existente antes é uma perda de tempo.
TIMTOWTDI, YMMV, IANAL, etc.
fonte
De acordo com esse cara , pode ser mais rápido de usar
rsync -z
, embora eu ache que seria quase tão eficiente quanto comprimir cada arquivo antes de transferir. Deve ser mais rápido do que comprimir o fluxo de alcatrão, conforme sugerido por outros.Na página do manual:
fonte
Como o scp do arquivo compactado e o rsync terão tempos de transferência muito semelhantes, a "maneira mais eficiente de fazer isso" seria a compactação instantânea, em vez da compactação, a transferência.
Além da "rapidez", outras considerações incluem:
O rsync pode ser facilmente reiniciado se nem todos os arquivos forem transferidos.
O rsync pode ser usado para manter os arquivos na máquina remota.
tar ou gzip local requer espaço local.
Considerações sobre o uso da porta para a máquina de destino e os firewalls: 1) O scp usa a porta 22 (por padrão), que pode não ser aceitável. 2) porta 873 de usuários rsync (por padrão)
Não sei por que o raio espera que o pôster original NÃO queira que os arquivos descompactados sejam armazenados.
fonte