Unir comandos com &&
significa que o comando à direita somente será executado se o da esquerda for bem-sucedido. Isso significa que seu crontab falhará na primeira vez em que for executado, já que não há arquivo zip em /var/www/html/
, então o rm /var/www/html/my-zip-file*.zip
falhará e o mv
não será executado.
Assim, você pode criar um arquivo com o nome correto que pode ser excluído e manter o mesmo comando cron:
touch /var/www/html/my-zip-file.zip
Você também pode usar ;
em vez de &&
:
cp /home/myuser/myworkingdir/file.txt /home/myuser/file.txt &&
cd /home/myuser &&
zip my-zip-file-$(date "+%b_%d_%Y_%H.%M.%S").zip file.txt &&
rm file.txt &&
rm /var/www/html/my-zip-file*.zip ;
mv my-zip-file*.zip /var/www/html && cd
Você também está tornando esse caminho mais complexo do que precisa ser. A cópia de /home/myuser/myworkingdir/file.txt
to /home/myuser/file.txt
é desnecessária, pois você só está usando isso para compactá-lo e excluí-lo. Os comandos cd
não são necessários, você pode usar o caminho completo. Também não há razão para cd
no final. Tudo o que você precisa é de um comando para remover quaisquer arquivos zip do diretório de destino e um comando para compactá-los:
rm /var/www/html/my-zip-file*.zip &&
zip /var/www/htmlmy-zip-file-$(date "+%b_%d_%Y_%H.%M.%S").zip /home/myuser/myworkingdir/file.txt