Controlar taxas de compactação gzip ao arquivar arquivos com tar?


3

Eu tenho um script que periodicamente faz o backup de um diretório usando o comando " tar -czvf [name] [directory] ", mas meu problema é que o script tem colocado muita pressão no servidor (Minecraft SMP) e tende a atrasar jogadores como faz o backup, que recentemente tem levado quase 5 minutos.

Então eu preciso saber se há uma maneira de controlar a taxa de compressão do GZip ao mesmo tempo que arquiva e faz o backup dos arquivos?

Eu entendo que posso primeiro tar os arquivos e depois GZip-los separadamente com uma taxa de compactação diferente depois, mas isso não funcionaria porque ele nomeia os arquivos com a hora atual do servidor, que às vezes muda entre os comandos.

Alguma ideia? Obrigado antes do tempo.


1
esta não é uma questão de programação; pode ser melhor nos usuários avançados ou nos sites do Linux / Unix StackExchange.
jcomeau_ictx

3
Peço desculpas, eu só postei aqui porque era parte de um script de shell .. Eu descobri o meu problema, a solução simples era colocar " GZIP = - [nível de compressão] " imediatamente antes do comando tar assim: GZIP=-[compression level] tar -czvf [name].tar.gz [directory]

Respostas:


2

Fazê-lo em duas etapas é provavelmente mais portátil. Se você precisar de um timestamp, armazene-o primeiro:

filename=/what/ever/backup-$(date +%Y%m%d%H%M%S).tar
tar cvf $filename ...
gzip -1 $filename

Eu também sugiro que você olhe nicee ionice. Eles podem ajudá-lo a diminuir os efeitos dos backups na capacidade de resposta do servidor.


Na verdade, resolvi isso de outra maneira, usando GZIP=-[compression level] tar -czvf [name].tar.gz [directory]no qual usei 1 para o nível de compactação, mas definitivamente darei ao seu método uma tentativa de tornar os nomes de backup mais uniformes e esperançosamente diminuir o atraso ainda mais alterando as prioridades, o que é algo que Nunca passou pela minha cabeça antes. Obrigado uma tonelada.

1

Talvez um pouco atrasado, mas isso poderia ajudar os outros ...

Se você estiver fazendo backup de dados semelhantes regularmente, você deve considerar fazer apenas uma cópia no início (e não compactá-la, basicamente fazendo apenas um arquivo tar) e compactar mais tarde cópias de backup juntas. No caso de um servidor Minecraft, você provavelmente fará alguns backups todos os dias. Você pode programar a compactação desses backups junto com um algoritmo forte como todos os dias, executando-o quando não há muitas pessoas no servidor. O atraso será maior, mas o ponto é que o arquivo resultante será realmente pequeno (porque a maioria dos arquivos do mundo não muda entre os backups). E se você tiver algum poder de reserva em alguns dos núcleos (o que é bastante provável), a compactação usará isso (e causará menor atraso para o restante do servidor), possivelmente aumentando o desempenho durante os backups.


0

Eu costumo fazer algo assim, então quando o processo de tar é feito, eu não tenho que lembrar de gzip, já que tudo é feito em uma linha:

tar cvf - $nameOfDirOrFileToBeBackedUp | gzip -$compressionLevel > $backupLocation/$nameOfDirOrFileToBeBackedUp.tar.gz

Este método funciona em versões mais antigas do tar que não suportam gzip (o Solaris 10 ainda não suporta).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.