Meu arquivo backup_system.sh não foi executado sob o crontab

1

Então eu criei um script usado para fazer o backup do sistema, eu testei e funcionou. Aqui está o script:

#!/bin/bash
backup_files="/home /var/spool/mail /etc /root /boot /opt"
dest="/mnt/backup"
day=$(date +%F)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"
echo "Backing up $backup_files to $dest/$archive_file"
date
echo
tar czf $dest/$archive_file $backup_files
echo
echo "Backup finished"
date
ls -lh $dest

Mas quando colocado em crontab, não funcionou. Eu usei "crontab -e" e coloquei a seguinte linha de comando lá

* * * * * /root/backup_system.sh

Eu esperei e nada aconteceu. Eu não sei onde eu estava errado. @ Estou executando o Ubuntu 14.04, o script foi alterado permissão usando chmod.

    
por The One 30.05.2016 / 08:50

1 resposta

2

A menos que seu script não seja executável (conserte isso com chmod +x /root/backup_system.sh ) ou o crond não esteja em execução, não há nada obviamente quebrado em seu script que impeça sua execução.

Todos os comandos que você usa ( date , hostname , tar e ls ) devem estar em /bin , que deve estar no PATH padrão ... a menos que você tenha alterado no seu crontab.

A explicação mais provável é que você está tentando executar este script a partir do crontab de um usuário, em vez do crontab do root. E esse usuário não tem acesso de leitura e execução ao diretório /root ou ao script /root/backup_system.sh .

BTW, você deve sempre citar duas vezes suas variáveis. E é uma boa ideia usar uma variável de matriz para variáveis que contenham uma lista de coisas (como $backup_files ).

Aqui está uma versão melhorada do seu script que corrige esses problemas:

#!/bin/bash

backup_files=(/home /var/spool/mail /etc /root /boot /opt)
dest='/mnt/backup'
day=$(date +%F)
hostname=$(hostname -s)
archive_file="$dest/$hostname-$day.tgz"

echo "Backing up ${backup_files[@]} to $archive_file"
date
echo

tar czf "$archive_file" "${backup_files[@]}"

echo
echo "Backup finished"
date

ls -lh "$dest"
    
por 30.05.2016 / 10:30