Cronjobs colocando arquivo no diretório errado

1

Estou executando um site em uma instância do Amazon ec2 executando o Debian Debian padrão. Eu configurei um cronjob para copiar os arquivos do site, fazer uma impressão do banco de dados e compactá-los. Eu quero manter os arquivos no mesmo diretório que o próprio script bash, que está localizado dentro do / var / www / [um novo diretório] / [um novo diretório] / [etc] /. Eu criei um usuário mysql que só pode ler e despejar o banco de dados, mas não pode escrever nele.

O script é o seguinte

#/bin/bash

CURRPATH=$(pwd)
SITEPATH="/var/www/html"

MYSQLUSER="user"
MYSQLPASS="password"
MYSQLDB="database"

CURRDATE=$(date +"%Y-%m-%d__%T_%p")
DATETAG="Backup_$CURRDATE"
TEMPDIR="$CURRPATH/$DATETAG"
ARCHIVENAME="$DATETAG.zip"

# I first copy the files so I can stick a database imprint in the same directory
cp -r  "$SITEPATH/" "$CURRPATH/"
mv "$CURRPATH/html" "$TEMPDIR"
mysqldump -u "$MYSQLUSER" -p"$MYSQLPASS" "$MYSQLDB" > "$TEMPDIR/BackupDB_$CURRDATE.sql"

cd $CURRPATH
zip -r "$ARCHIVENAME" "$DATETAG"
rm -rf "$TEMPDIR"

Eu configurei isso com o crontab, e ele funciona perfeitamente, exceto por um problema - o arquivo termina na pasta ~ / root (eu configurei o crontab com o usuário root).

Existe uma maneira de fazer com que este arquivo seja citado no mesmo diretório que o script, a variável $ CURRPATH?

    
por Nicholas Finch 05.07.2013 / 07:45

1 resposta

6

CURRPATH não é o diretório no qual o script está, é o diretório de trabalho que o script herdou de seu processo pai; para tarefas agendadas, esse é o diretório inicial da conta em que está sendo executado (ou seja, ~ root). Se você quiser o diretório em que o script está, use CURRPATH=$(dirname "$BASH_SOURCE") .

    
por 05.07.2013 / 07:57