impede que o backup seja executado em paralelo

6

No meu script /usr/local/bin/backup , que eu chamo a cada hora de /etc/crontab , eu uso rsync para copiar dados para um servidor externo. Tudo funcionou bem, mesmo nos casos em que tivemos dados um pouco mais novos que podem ser eliminados em uma hora.

Na semana passada alguém copiou um arquivo de 11GB na partição de dados e quando eu descobri que no dia seguinte havia 14 programas rsync rodando em paralelo, cada um deles sem largura de banda e provavelmente trabalhando no mesmo arquivo. Eu matei todos eles (antes de perceber que eu deveria ter mantido o primeiro funcionando), parei o cron job e executei o script de backup manualmente.

Eu posso escrever um arquivo no script antes de iniciar o rsync e verificar no script se esse arquivo já está lá para impedir que o backup seja executado em paralelo. Existe uma maneira mais fácil de fazer isso?

Minha /etc/crontab entry:

5  *  *  *  *   root  /usr/local/bin/backup
    
por Kvalan 18.03.2016 / 21:42

1 resposta

6

Existem maneiras diferentes de fazer isso, mas o mais fácil é inserir o bando antes do comando no arquivo crontab:

5  *  *  *  *   root  flock -n /var/lock/backup /usr/local/bin/backup

O arquivo /var/lock/backup é o bloqueio que o lote usa e -n faz com que o comando falhe se o bloqueio já existir.

Isso pode significar que se um backup levar 1 hora e 1 minuto, o próximo começa 59 minutos depois. Se isso é um problema, você pode procurar em -x .

    
por 18.03.2016 / 21:45

Tags