rsync um arquivo já compactado

rsync um arquivo já compactado

rysnc -z terá alguma vantagem de compactação se o arquivo de entrada já estiver compactado? Eu tenho um grande arquivo compactado de 100 GB para enviar pela rede entre servidores e ele falha consistentemente (tubo quebrado) após vários períodos de tempo. Querendo saber se devo tentar o sinalizador -z.

Responder1

A compactação em trânsito de um arquivo já compactado geralmente não compensa o tempo de CPU. Existem advertências. No processo de comparação de dois arquivos, usar rsync com compactação pode acelerar a comparação de hashes dos dados.

Se você deseja sincronizar apenas versões compactadas de arquivos grandes em mais de um sistema, um lugar para procurar seriam certas compilações do gzip. Em um sistema Ubuntu, recebo:

$ gzip -h
Uso: gzip [OPÇÃO]... [ARQUIVO]...
Compacte ou descompacte FILES (por padrão, compacte FILES no local).

Argumentos obrigatórios para opções longas também são obrigatórios para opções curtas.

  -c, --stdout escreve na saída padrão, mantém os arquivos originais inalterados
  -d, --decompress descompactar
  -f, --force força a substituição do arquivo de saída e compacta os links
  -h, --help dê esta ajuda
  -l, --list lista o conteúdo do arquivo compactado
  -L, --license exibir licença de software
  -n, --no-name não salva ou restaura o nome e carimbo de data/hora originais
  -N, --name salva ou restaura o nome original e carimbo de data/hora
  -q, --quiet suprime todos os avisos
  -r, --recursive operam recursivamente em diretórios
  -S, --suffix=SUF usa o sufixo SUF em arquivos compactados
  -t, --test testa a integridade do arquivo compactado
  -v, --verbose modo detalhado
  -V, --version exibe o número da versão
  -1, --fast comprime mais rápido
  -9, --best comprime melhor
    --rsyncable Torna o arquivo compatível com rsync

Sem FILE, ou quando FILE for -, leia a entrada padrão.

Reportar bugs para .

Observe essa --rsyncableopção? Ele evita o uso de compactação adaptativa para que apenas pequenas partes do arquivo compactado sejam alteradas quando há apenas uma pequena alteração no arquivo de origem. O restante dos dados binários permanece inalterado para que o rsync não precise retransmitir tudo. A página de manual indica que esta opção não deve aumentar o tamanho do arquivo compactado em mais de 1% em comparação com o uso da opção, e que o gunzip não saberá a diferença.

Eu tenho um arquivo sql de 468 MB que compactei para 57 MB com a --rsyncableopção. Eu transfiro este arquivo para meu sistema local. Em seguida, adiciono um comentário de uma linha ao arquivo sql original no sistema remoto e recompacto com a opção rsyncable.

$ rsync -avvz --progress -h fooboo:foo.sql.gz .
abrindo conexão usando ssh fooboo rsync --server --sender -vvlogDtprz . foo.sql.gz
recebendo lista de arquivos...
1 arquivo a considerar
transmissão delta habilitada
foo.sql.gz
      59,64M 100% 43,22MB/s 0:00:01 (xfer#1, para verificar=0/1)
total: correspondências=7723 hash_hits=9468 falsos_alarms=0 dados=22366

enviados 54,12 K bytes recebidos 22,58 K bytes 17,05 K bytes/s
o tamanho total é 59,64M, a velocidade é 777,59

Nada mal. O Rsync só precisou transferir uma pequena quantidade do arquivo compactado mais recente.

Responder2

O rsync não tornará um arquivo já compactado significativamente menor durante o trânsito.

É improvável que suas transferências com falha sejam corrigidas adicionando o sinalizador -z. Eu sugeriria tentar sincronizar novamente os arquivos descompactados. O rsync irá então compactar instantaneamente. Você tem então a vantagem de que, caso o arquivo de origem seja alterado e você precise sincronizar novamente, apenas os bytes alterados serão transferidos. Se você alterar um arquivo compactado, o rsync provavelmente terá que retransmiti-lo por completo. Veja aqui para mais detalhes:

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

Responder3

Usar rsync -znão terá nenhuma vantagem apenas rsyncquando se trata de um arquivo que já foi compactado em um bom formato de compactação. No entanto, você pode considerar dividir seu arquivo compactado em pedaços menores, para poder transmiti-lo usando o rsync.

Aqui está um guia para Linux:http://www.techiecorner.com/107/how-to-split-large-file-into-several-smaller-files-linux/ E para Windows:http://www.online-tech-tips.com/computer-tips/how-to-split-a-large-file-into-multiple-smaller-pieces/

informação relacionada