Se você tiver alguma tarefa que requeira mais de uma linha de shell, uma abordagem comum é colocá-la em um script de shell pequeno e chamar esse script de shell do cron.
0 18 * * 1 /home/myuser/backups/backup-and-ftp-db.sh
onde /home/myuser/backups/backup-and-ftp-db.sh
contém algo como
#!/bin/sh
dumpfile=/home/myuser/backups/bdd-$(date +%d-%m-%Y).sql
/usr/bin/mysqldump --add-drop-table --extended-insert -user -ppass db [table] > $dumpfile
lftp -e "put $dumpfile backupdir/$dumpfile ; quit" -u username,password backupserver
Também é importante notar que várias invocações de date
na substituição de comandos, como o Mike fez, podem levar a resultados diferentes. Isso é mais provável se a data incluir horas / minutos / segundos, no entanto, considere o que acontece se o seu cron job iniciar antes da meia-noite - sua primeira chamada de data, diga bdd-19-05-11.sql
, e se o mysqldump demorar o suficiente para que a meia-noite passe e você no dia seguinte, seu segundo comando esperará um nome de arquivo bdd-20-05-11.sql
. Por esse motivo, invoco date
uma vez e armazeno em uma variável.