Autor Tópico: Agendamento Crontab dia especifico da semana intercalado.  (Lida 724 vezes)

Offline ctavares

  • Usuário Ubuntu
  • *
  • Mensagens: 241
  • Linux
    • Ver perfil
Agendamento Crontab dia especifico da semana intercalado.
« Online: 09 de Junho de 2017, 10:06 »
Bom dia,
 Alguém saberia me dizer como fazer um agendamento no crontab para executar segunda feira sim, segunda feira não? Eu tenho um script de backup mas quero armazenar o backup por 14 dias e ele precisa executar as segundas feiras uma sim e a outra não.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.632
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:Agendamento Crontab dia especifico da semana intercalado.
« Resposta #1 Online: 09 de Junho de 2017, 10:33 »
A primeira segunda-feira do mês ocorre entre os dias 1 e 7.
A segunda segunda-feira do mês ocorre entre os dias 8 e 14.
A terceira segunda-feira do mês ocorre entre os dias 15 e 21
A quarta segunda-feira do mês ocorre entre os dias 22 e 28.
A quinta segunda-feira do mês, quando ocorre, ocorre entre os dias 29 e 31.

Assim, até onde eu consigo ver, não há como agendar no crontab um serviço com intervalo de 14 dias. Mas é possível agendar várias recorrências do mesmo serviço para executar nas várias segundas feiras. Assim, você poderia agendar seu serviço pra rodar nas primeira e terceira segundas-feiras, com a possibilidade de que entre o último backup de um mês e o primeiro backup do mês seguinte corram mais do que 14 dias, que seria o que ocorreria se você tivesse um mês com cinco segundas-feiras. Agendando um backup para a quinta segunda-feira você impediria que isso acontecesse, mas criaria outro problema: entre a quinta segunda-feira de um mês e a primeira do mês seguinte há apenas sete dias, quebrando seu requisito de mínimo de 14 dias entre os backups.

Minha sugestão, então, é que você faça como dois agendamentos.

O primeiro será na hora planejada, na primeira segunda-feira do mês (ou seja, entre os dias 1 e 7), o segundo será na hora planejada, na terceira segunda-feira do mês (ou seja, entre os dias 15 e 21). Algo assim:

Código: [Selecionar]
00 03 1-8 * mon /home/carlos/script-backup.sh
00 03 15-21 * mon /home/carlos/script-backup.sh

Dito isso, eu tenho que avisar a você que não acho prático nem recomendável usar scripts para fazer backup. Para isso existem pacotes de sistemas prontos, elaborados e simples de usar, como o Bacula e o Amanda, que têm muito mais recursos e facilidades, até mesmo de te dar alternativas pro seu problema.
« Última modificação: 09 de Junho de 2017, 10:36 por zekkerj »
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline ctavares

  • Usuário Ubuntu
  • *
  • Mensagens: 241
  • Linux
    • Ver perfil
Re:Agendamento Crontab dia especifico da semana intercalado.
« Resposta #2 Online: 09 de Junho de 2017, 10:48 »
Na verdade resolvemos com adaptação no script onde ele só executa se tiver um determinado parâmetro em 1 e quando executa a primeira vez ele muda o parâmetro de 1 para 2, quando executa a segunda vez não faz o bkp mas muda o parâmetro para 1 de novo e na terceira vez que executa ele faz o bkp porque o parâmetro inicial voltou a ser 1 e assim sucessivamente, mas é uma solução de contorno, eu pensei que o crontab pudesse ter uma solução existente para agendamentos assim. Mas obrigado pelo seu retorno. Vou continuar dessa forma até encontrar forma melhor.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.632
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:Agendamento Crontab dia especifico da semana intercalado.
« Resposta #3 Online: 09 de Junho de 2017, 10:57 »
Falando especificamente de sistemas de backup predefinidos, no Bacula você pode criar um pool de backup, e agendar backups diários e semanais. No backup diário você ajusta para ser diferencial (ou seja, fazer backup só do que foi alterado desde o último backup) ou incremental (ou seja, só o que foi alterado desde o último backup full), e o semanal vc ajusta para ser um backup full (ou seja, todos os arquivos escolhidos).

Ao mesmo tempo, vc ajusta o pool para reter seus jobs por no mínimo duas semanas. A título de comparação, minha rotina de backup (eu uso o Bacula) retém backups por cinco anos.

Por isso que eu falo sempre que não vale a pena desenvolver scripts de backup próprios... vocês estão gastando tempo e recursos pra resolver problemas que já foram resolvidos há muito tempo...
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline ctavares

  • Usuário Ubuntu
  • *
  • Mensagens: 241
  • Linux
    • Ver perfil
Re:Agendamento Crontab dia especifico da semana intercalado.
« Resposta #4 Online: 09 de Junho de 2017, 11:32 »
Falando especificamente de sistemas de backup predefinidos, no Bacula você pode criar um pool de backup, e agendar backups diários e semanais. No backup diário você ajusta para ser diferencial (ou seja, fazer backup só do que foi alterado desde o último backup) ou incremental (ou seja, só o que foi alterado desde o último backup full), e o semanal vc ajusta para ser um backup full (ou seja, todos os arquivos escolhidos).

Ao mesmo tempo, vc ajusta o pool para reter seus jobs por no mínimo duas semanas. A título de comparação, minha rotina de backup (eu uso o Bacula) retém backups por cinco anos.

Por isso que eu falo sempre que não vale a pena desenvolver scripts de backup próprios... vocês estão gastando tempo e recursos pra resolver problemas que já foram resolvidos há muito tempo...

Tem razão, vou estudar esse assunto. Obrigado.