Cronjobs把档案放在错误的目录中

我在运行默认Debian linux的Amazon ec2实例上运行一个网站。 我设置了一个cronjob来复制站点文件,获取数据库的印记,并将其压缩。 我想将文件存档保存在与/ var / www / [新目录] / [新目录] / [etc] /中的bash脚本本身相同的目录中。 我创build了一个mysql用户,只能读取和转储数据库,但不能写入它。

脚本如下

#/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" 

我把它设置为crontab,除了一个问题,它完美的工作 – 档案结束在〜/根文件夹(我用root用户设置crontab)。

有没有办法让这个档案在与脚本$ CURRPATHvariables相同的目录中吐出?

CURRPATH不是脚本所在的目录,它是脚本从其父进程inheritance的工作目录; 对于cron作业,这是它正在运行的帐户的主目录(即〜root)。 如果您需要脚本所在的目录,请CURRPATH=$(dirname "$BASH_SOURCE")使用CURRPATH=$(dirname "$BASH_SOURCE")