Por resposta do Ipor Sircer sobre o uso de cron
, ou seja,
man crontab:
crontab [ -u user ] file The first form of this command is used to install a new crontab from some named file or standard input if the pseudo-filename ''-'' is given.
isto significa que você envia as linhas que você quer em seu arquivo crontab, para o stdin deste comando:
crontab -
crontab
irá recriar um novo arquivo cron contendo esses comandos.
-
O script primeiro imprimirá seu crontab existente usando
crontab -u $user -l 2>/dev/null
.
você precisará atribuir o valor de seu usuário a$user
ou usar$USER
se estiver em seu ambiente. -
Ele imprimirá as novas linhas que você deseja e capturará o resultado agregado em um canal conectado ao stdin de
crontab -
.
Veja como deve ficar em seu script de propósito geral:
#!/bin/bash
user=YOU_NEED_TO_ENTER_YOUR_USER_HERE
# use a subshell to capture both commands output into the pipe ( # prints the current value of crontab
crontab -u $user -l 2>/dev/null
# print your cron jobs to STDOUT
cat <<- 'EOF'
0 8 * * * tar -zcvf /home/USERNAME/backups/files/www-html-$(date +\%F-\%T-).tar.gz /var/www/html
0 8 * * * find /home/USERNAME/backups/files/* -mtime +30 -exec rm {} \;
0 8 * * * mysqldump -u benia -p121212 --all-databases > /home/USERNAME/backups/mysql/alldb_backup.sql
1 8 * * * tar -zcvf /home/USERNAME/backups/mysql/alldb_backup-$(date +\%F-\%T-).sql.tar.gz /home/USERNAME/backups/mysql/alldb_backup.sql
2 8 * * * rm /home/USERNAME/backups/mysql/alldb_backup.sql
2 8 * * * find /home/USERNAME/backups/mysql/* -mtime +30 -exec rm {} \;
EOF
# Everything printed to stdout - inside the subshell will be connected
# to the pipe and feed to crontab on stdin - recreating a new crontab ) | crontab -