rsync um arquivo já compactado

4

rysnc -z terá alguma vantagem de compressão se o arquivo de entrada já estiver gzipado? Eu tenho um grande arquivo compactado de 100GB para enviar através da rede em servidores e ele falhou consistentemente (cano quebrado) após vários períodos de tempo. Perguntando se eu deveria tentar a bandeira -z.

    
por user15586 18.08.2012 / 09:44

3 respostas

8

A compactação em trânsito de um arquivo já compactado geralmente não vale o tempo de CPU. Existem ressalvas. No processo de comparar dois arquivos, o uso do rsync com compactação pode acelerar a comparação dos hashes dos dados.

Se você quiser apenas sincronizar versões compactadas de arquivos grandes em mais de um sistema, um lugar para procurar seria certas construções de gzip. Em um sistema Ubuntu, eu recebo:

$ gzip -h
Usage: gzip [OPTION]... [FILE]...
Compress or uncompress FILEs (by default, compress FILES in-place).

Mandatory arguments to long options are mandatory for short options too.

  -c, --stdout      write on standard output, keep original files unchanged
  -d, --decompress  decompress
  -f, --force       force overwrite of output file and compress links
  -h, --help        give this help
  -l, --list        list compressed file contents
  -L, --license     display software license
  -n, --no-name     do not save or restore the original name and time stamp
  -N, --name        save or restore the original name and time stamp
  -q, --quiet       suppress all warnings
  -r, --recursive   operate recursively on directories
  -S, --suffix=SUF  use suffix SUF on compressed files
  -t, --test        test compressed file integrity
  -v, --verbose     verbose mode
  -V, --version     display version number
  -1, --fast        compress faster
  -9, --best        compress better
    --rsyncable   Make rsync-friendly archive

With no FILE, or when FILE is -, read standard input.

Report bugs to .

Observe que a opção --rsyncable ? Evita usar a compactação adaptável para que apenas pequenas partes do arquivo compactado sejam alteradas quando houver apenas uma pequena alteração no arquivo de origem. O restante dos dados binários não é alterado, de modo que o rsync não precisará retransmitir a coisa toda. A página man indica que essa opção não deve aumentar o tamanho do arquivo compactado em mais de 1% comparado a sem usar a opção, e que o gunzip não saberá a diferença.

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

$ rsync -avvz --progress -h fooboo:foo.sql.gz .
opening connection using ssh fooboo rsync --server --sender -vvlogDtprz . foo.sql.gz 
receiving file list ... 
1 file to consider
delta-transmission enabled
foo.sql.gz
      59.64M 100%   43.22MB/s    0:00:01 (xfer#1, to-check=0/1)
total: matches=7723  hash_hits=9468  false_alarms=0 data=22366

sent 54.12K bytes  received 22.58K bytes  17.05K bytes/sec
total size is 59.64M  speedup is 777.59

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

    
por 20.11.2012 / 17:13
2

O rsync não fará com que um arquivo já compactado seja significativamente menor durante o trânsito.

É improvável que suas transferências com falha sejam corrigidas, adicionando o sinalizador -z. Eu sugiro tentar rsync o arquivo (s) descompactado. O rsync será então comprimido na hora. Você então tem a vantagem de que, caso o arquivo de origem mude e você precise rsync novamente, somente os bytes alterados serão transferidos. Se você alterar um arquivo compactado, o rsync provavelmente terá que retransmiti-lo em sua totalidade. Veja aqui para mais detalhes:

link

    
por 18.08.2012 / 10:21
2

Usar rsync -z não terá qualquer vantagem sobre apenas rsync ao lidar com um arquivo que já tenha sido compactado usando um bom formato de compactação. No entanto, você pode considerar dividir seu arquivo compactado em partes menores, para poder transmiti-lo usando o rsync.

Aqui está um guia para o linux: link E para Windows: link

    
por 18.08.2012 / 10:40