Erro de script bash Rsync (envio: comando não encontrado)

0

Eu tenho um script de backup para o meu servidor que funciona principalmente. Apenas os comandos rsync lançam um erro no log no qual não consigo encontrar uma solução.

Aqui está parte do meu script (eu removi o material de trabalho):

#!/bin/bash

TIMESTAMP='date +%Y%m%d_%H%M'
BKROOT="/home/roots/backups"
BKDIR="/home/roots/backups/$TIMESTAMP"

LOG="$BKROOT/backup_$TIMESTAMP.log"

function log () 
{
    now=$(date +"%T")
    echo -e "$now: $1"
}

echo -e "Starting backup..."

if [ ! -d "$BKDIR" ]; then
        echo -e "Creating Backup directory $BKDIR..."
        mkdir -p $BKDIR
        mkdir -p $BKDIR/games
        mkdir -p $BKDIR/games/minecraft
fi

# Redirect all output to log
exec >> $LOG 
exec 2>&1

log "Saving Minecraft..."
'/usr/bin/rsync -av /var/games/minecraft $BKDIR/games/minecraft --exclude 'plugins/dynmap/web''
log

# Sleeping 10 seconds to allow file access
sleep 10

# Compressing backup
log "Compressing backup to $BKROOT/backup_$TIMESTAMP.tar.gz..."
'/bin/tar czvfP $BKROOT/backup_$TIMESTAMP.tar.gz "$BKDIR"'
if [[ $? != 0 ]]; then
    log "Error during compression"
else 
    log "Compression OK"
fi

# Uploading backup to Backup storage
log "Uploading backup and log to Backup storage..."
'/usr/bin/scp $BKROOT/backup_$TIMESTAMP.tar.gz [email protected]:/'
if [[ $? != 0 ]]; then
    log "Error during upload of backup"
else 
    log "Uploading of backup OK"
fi
'scp $LOG [email protected]:/'
if [[ $? != 0 ]]; then
    log "Error during upload of backup log"
else 
    log "Uploading of backup log OK"
fi
log

TIMEEND='date "+%m/%d/%Y @ %H:%M"'

# Logging free space on backup location
echo 'df -h' | sftp [email protected]

# Sending mail
'echo "Done" | mutt -s "Backup completed on $TIMEEND" -i $LOG [email protected]'

# Removing backup folder
echo -e "Removing temporary folder"
log "Removing temporary folder..."
'rm $BKDIR -rf'

O script está sendo executado como root por meio do cronjob. Tudo está funcionando bem, exceto os comandos rsync. Cada um deles está escrevendo o seguinte erro no arquivo de log:

20:19:38: Saving Minecraft...
/home/roots/scripts/backup.sh: line 126: sending: command not found
20:21:07:
20:21:40: Backup of www-data files
/home/roots/scripts/backup.sh: line 141: sending: command not found
/home/roots/scripts/backup.sh: line 142: sending: command not found
20:22:58:
20:23:03: Copying FHEM backups
/home/roots/scripts/backup.sh: line 157: sending: command not found

Todos os 4 comandos rsync têm exatamente os mesmos parâmetros, exceto os caminhos de origem e de destino.

O servidor está executando o Ubuntu 16.04.2 LTS (Xenial Xerus).

Alguém tem uma ideia do que eu fiz de errado?

    
por adiuva 22.06.2017 / 21:05

1 resposta

3

Você tem linhas como esta:

'/usr/bin/rsync -av /var/games/minecraft $BKDIR/games/minecraft --exclude 'plugins/dynmap/web''

Os backticks significam para executar a saída do comando entre eles. Portanto, o comando rsync é executado, cria alguma saída e o shell tenta executar essa saída . Simplesmente remova os backticks e você ficará bem:

/usr/bin/rsync -av /var/games/minecraft $BKDIR/games/minecraft --exclude 'plugins/dynmap/web'
    
por 22.06.2017 / 22:37