A maneira mais rápida combina muitos arquivos em um (tar czf é muito lento)

21

Atualmente, estou executando tar czf para combinar arquivos de backup. Os arquivos estão em um diretório específico.

Mas o número de arquivos está crescendo. Usar tzr czf leva muito tempo (mais de 20 minutos e contando).

Eu preciso combinar os arquivos mais rapidamente e de forma escalável.

Encontrei genisoimage , readom e mkisofs . Mas eu não sei qual é o mais rápido e quais são as limitações para cada um deles.

    
por Najib-botak Chin 21.08.2011 / 19:46

3 respostas

21

Você deve verificar se a maior parte do tempo está sendo gasto em CPU ou em E / S. De qualquer forma, existem maneiras de melhorá-lo:

A: não comprima

Você não mencionou "compressão" em sua lista de requisitos, então tente remover o "z" da sua lista de argumentos: tar cf . Isso pode acelerar um pouco as coisas.

Existem outras técnicas para acelerar o processo, como usar "-N" para pular arquivos dos quais você já fez backup anteriormente.

B: backup da partição inteira com dd

Como alternativa, se você estiver fazendo o backup de uma partição inteira, faça uma cópia de toda a imagem do disco. Isso salvaria o processamento e um lote do tempo de busca da cabeça do disco. tar e qualquer outro programa trabalhando em um nível mais alto tem uma sobrecarga de ter que ler e processar entradas de diretório e inodes para encontrar onde o conteúdo do arquivo está e fazer mais busca de disco , lendo cada arquivo de um lugar diferente do disco.

Para fazer backup dos dados subjacentes muito mais rapidamente, use:

dd bs=16M if=/dev/sda1 of=/another/filesystem

(Isso pressupõe que você não está usando RAID, o que pode mudar um pouco as coisas)

    
por 21.08.2011 / 20:03
7

Para repetir o que os outros disseram: precisamos saber mais sobre os arquivos que estão sendo armazenados em backup. Eu vou com algumas suposições aqui.

Anexar ao arquivo tar

Se os arquivos estiverem sendo adicionados apenas aos diretórios (ou seja, nenhum arquivo estiver sendo excluído), certifique-se de estar anexando ao arquivo tar existente em vez de recriá-lo sempre. Você pode fazer isso especificando o nome do arquivo existente em seu comando tar em vez de um novo (ou excluindo o antigo).

Escreva para um disco diferente

Ler no mesmo disco em que você está gravando pode estar matando o desempenho. Tente gravar em um disco diferente para distribuir a carga de E / S. Se o arquivo morto precisar estar no mesmo disco dos arquivos originais, mova-o depois.

Não comprima

Apenas repetindo o que @Yves disse. Se seus arquivos de backup já estiverem compactados, não há muita necessidade de compactar novamente. Você só estará desperdiçando ciclos de CPU.

    
por 21.08.2011 / 21:46
1

Estou surpreso que ninguém mencione o despejo e a restauração. Será muito mais rápido que dd se você tiver espaço livre no sistema de arquivos.

Note que, dependendo do sistema de arquivos em questão, você pode precisar de ferramentas diferentes:

  • ext2 / 3/4 - dump e restore (pacote dump em RH / Debian)
  • XFS - xfsdump e xfsrestore (pacote xfsdump em RH / Debian)
  • ZFS - zfs send e zfs recv
  • BTRFS - btrfs send e btrfs recebem

Note que alguns programas não possuem compressão interna (todos exceto dump) - pipe to stdout e usam pigz conforme necessário. ; -)

    
por 24.08.2017 / 03:57