Primeiro, não há problema em ter um script com mais de 60 linhas - eu lidei com roteiros de shell que possuem centenas de linhas, o shell não se importa.
Sem mais informações (mostre-nos suas entradas / entradas no crontab, e todo o script sendo executado - como isso é " $a
" populado? Ele contém espaços? etc.) é difícil dar uma resposta boa e definitiva por que isso não está funcionando, mas posso te dar um pouco de reflexão:
Eu tenho um problema com a maneira como você executa seus scripts: Usar o tempo para separar as ações dependentes é uma receita para o desastre. Dependendo do tamanho desses arquivos, da lentidão dos discos, do cruzamento de partições etc. etc., é possível que o primeiro script não esteja terminando quando o segundo script for executado. Isso tem duas implicações principais:
-
Script 1
ainda pode mover arquivos enquanto Script 2
está fazendo o tarball.
-
Script 2
é apenas tar
das coisas que vê quando executa o comando tar
.
-
Script 2
também é rm
do que ele vê quando chega ao comando rm
- Isso pode significar que está excluindo coisas que não foram adicionadas ao tarball
- Se o
Script 1
ainda estiver em execução, você terá arquivos "perdidos" copiados depois que o rm
estiver pronto. Eles ficarão por aqui.
@ A sugestão de XoR de encadear os scripts no cron é uma maneira de se proteger. Então, combinar os dois scripts em um script maior.
Usando arquivos de bloqueio (o Linux tem o comando lockfile (1) ; acredito que a maioria dos BSDs tem lockf ( 1) ) é outra opção, e é um pouco mais robusta do que encadear scripts juntos no cron.