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á aumentando. O uso tzr czf
leva muito tempo (mais de 20 minutos e contando).
Preciso combinar os arquivos mais rapidamente e de forma escalável.
Eu encontrei genisoimage
, readom
e mkisofs
. Mas não sei qual é o mais rápido e quais são as limitações para cada um deles.
tar
introduza uma sobrecarga significativa, ler os arquivos é a operação cara aqui. Você deve modificar a maneira como seus arquivos são armazenados ou usar uma abordagem radicalmente diferente (copie o sistema de arquivos como um todo). Não podemos ajudá-lo muito sem saber como seus arquivos estão organizados.Respostas:
Você deve verificar se a maior parte do seu tempo está sendo gasta na CPU ou na E / S. De qualquer maneira, existem maneiras de melhorá-lo:
A: não comprima
Você não mencionou "compressão" em sua lista de requisitos de modo a tentar deixar cair o "z" de 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 ignorar arquivos dos quais você já fez backup anteriormente.
B: faça backup de toda a partição com dd
Como alternativa, se você estiver fazendo backup de uma partição inteira, faça uma cópia de toda a imagem do disco. Isso economizaria o processamento e muito tempo de busca da cabeça do disco.
tar
e qualquer outro programa que esteja trabalhando em um nível superior tem a sobrecarga de ter que ler e processar entradas e inodes de diretórios para descobrir onde está o conteúdo do arquivo e fazer mais buscas no disco principal , lendo cada arquivo de um local 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 esteja usando RAID, o que pode mudar um pouco as coisas)
fonte
pigz
se existir no sistema, mais de um processador.Para repetir o que outros disseram: precisamos saber mais sobre os arquivos que estão sendo copiados. 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 está sendo excluído), verifique se você está anexando ao arquivo tar existente, em vez de recriá-lo sempre. Você pode fazer isso especificando o nome do arquivo existente no seu
tar
comando, em vez de um novo (ou excluindo o antigo).Grave em um disco diferente
Ler do mesmo disco em que você está gravando pode estar prejudicando o desempenho. Tente gravar em um disco diferente para distribuir a carga de E / S. Se o arquivo morto precisar estar no mesmo disco que os arquivos originais, mova-o posteriormente.
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 da CPU.
fonte
Usando tar com czpression lz4 como em
oferece o melhor dos dois mundos (boa compressão e velocidade). Espere uma taxa de compactação de cerca de 3, mesmo que seus dados contenham arquivos binários.
Leitura adicional: comparação de algoritmos de compactação Como tar com lz4
fonte
Estou surpreso que ninguém mencione despejo e restauração. Será muito mais rápido que o dd se você tiver espaço livre no sistema de arquivos.
Observe que, dependendo do sistema de arquivos em questão, você pode precisar de ferramentas diferentes:
Observe que alguns programas não possuem compactação embutida (todos, exceto dump) - canalize para stdout e use pigz conforme necessário. ;-)
fonte