BASH - Script simples com comando rm não funciona

0

Eu fiz este script simples:

#/bin/bash
DATE=$(date +"%d_%m_%Y-%H:%M:%S")
tar -czvf /kopie/bin-$DATE.tar /bin
DATE=$(date --date="2 hours ago" +"%d-%m-%Y_%H")
rm -f /kopie/bin-$DATE*.tar

Eu tenho problema com a última linha do script. O comando rm não funciona, ele não exclui o arquivo. A data de "2 horas atrás" funciona muito bem, então não é problema com isso.

    
por DobryCover 20.11.2017 / 23:57

2 respostas

3

Você parece especificar o nome do arquivo de duas maneiras diferentes:

DATE=$(date --date="2 hours ago" +"%d-%m-%Y_%H")

Acima, existe, e. um _ entre o ano e a hora.

Mas a data que você gerou tinha um formato diferente:

DATE=$(date +"%d_%m_%Y-%H:%M:%S")

No entanto, isso ainda não resolveria o problema inerente de obter "uma data mais ou menos duas horas atrás", porque leva um único segundo para ir das 13:00:00 às 12:59 : 59, que não corresponde a um padrão "2017-11-20_13 *".

Eu investigaria usando find :

 find . -name "*.tar"  -maxdepth 0 -cmin +120 -delete

deve matar todos os arquivos * .tar no diretório atual com mais de duas horas (use +119 para ter um tempo de cortesia de um minuto). Além disso, você pode omitir -delete ao testar se essa abordagem funciona.

    
por 21.11.2017 / 00:02
0

Eu acredito que o problema é com a expansão da variável $DATE na última linha. Para testar isso, você pode simplesmente adicionar um echo na frente do comando rm e executar o script, ou pode tentar evitar o problema usando ${DATE} em vez de apenas $DATE no comando rm .

O problema também pode ser que você esteja tentando excluir um nome de arquivo que não existe, já que parece ter dois formatos de saída de data diferentes especificados, e estou assumindo que os formatos de data devem corresponder entre a criação do arquivo tar e a exclusão duas horas depois.

    
por 21.11.2017 / 00:00

Tags