Pegue o backup e exclua-o após 6 horas

2

Eu quero fazer um script bash que faça um backup do arquivo abc.txt e exclua esse backup 6 horas após criá-lo.

Existe alguma maneira eficiente de fazer isso?

    
por Avani badheka 05.06.2017 / 08:48

1 resposta

9

Não sei qual é o caso de uso, mas você pode simplesmente fazer isso:

cp abc.txt abc.txt.bak && sleep $((60 * 60 * 6)) && rm abc.txt.bak
  • && é o operador de avaliação de curto-circuito, o comando após ele só será executado se o precedente sair com o status de saída 0

  • cp abc.txt abc.txt.bak faz um backup de abc.txt com uma extensão .bak , ou seja, o backup é nomeado abc.txt.bak (modifique isso para atender à sua necessidade)

  • sleep $((60 * 60 * 6)) dorme por 6 horas, ou seja, 21600 segundos

  • rm abc.txt.bak remove o backup após o tempo de suspensão

Você pode aproveitar a expansão de chaves por brevidade, se quiser:

cp abc.txt{,.bak} && sleep $((60 * 60 * 6)) && rm abc.txt.bak

Ou como (GNU) sleep suporta h sufixo para indicar horas (obrigado @muru pelo lembrete):

cp abc.txt{,.bak} && sleep 6h && rm abc.txt.bak
    
por heemayl 05.06.2017 / 09:02