Debian
Cronjobs 將存檔放在錯誤的目錄中
我在執行預設 Debian linux 的 Amazon ec2 實例上執行一個網站。我設置了一個 cronjob 來複製站點文件,獲取數據庫印記,然後將它們壓縮。我想將文件存檔保存在與 bash 腳本本身相同的目錄中,該目錄位於 /var/www/ 的深處
$$ a new directory $$/$$ a new directory $$/$$ etc $$/。我創建了一個 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 文件夾中(我用 root 使用者設置了 crontab)。
有沒有辦法讓這個存檔與腳本在同一目錄中吐出,$CURRPATH 變數?
CURRPATH 不是腳本所在的目錄,它是腳本從其父程序繼承的工作目錄;對於 cron 作業,這是執行它的帳戶的主目錄(即 ~root)。如果您想要腳本所在的目錄,請
CURRPATH=$(dirname "$BASH_SOURCE")
改用。