Cronjobはgitを介してMongoDBバックアップをプッシュします。

Cronjobはgitを介してMongoDBバックアップをプッシュします。

仕事:
毎晩 bash スクリプトを実行する Cronjob を作成します。 bashスクリプトはmongoDBバックアップを実行し、それをGit Repoにプッシュする必要があります。

だから、cronjob次のコマンドでrootユーザーを作成しましたcrontab -e

#!/bin/bash
SHELL=/bin/bash
USER=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
HOME=/root

0 2 * * * /path/script.sh > /path/script.log

実行するスクリプトは次のとおりです。

BAK="/path"
#MONGO="/usr/bin/mongo"
#MONGODUMP="/usr/bin/mongodump"
#GIT="/usr/bin/git"

echo "starting backup"
echo $BAK
/usr/bin/mongodump --username=myusername --password=mypassword --db=mydatabase --out=$BAK$
echo "backup created"
/usr/bin/git add .
/usr/bin/git commit -m "backup from `date +'%Y_%m_%d'`"
echo "committed"
/usr/bin/git push -u origin master
echo "pushed backup. done"

結果:
バックアップは作成されていますが、ストレージにプッシュされません。スクリプトを手動で実行すると、必要に応じてバックアップがプッシュされます。ログにはスクリプト内のすべてのエコーのみが含まれます。

答え1

コマンドを実行したときに正しいディレクトリにありましたかgit?つまり、git add .コマンドの実行時にリポジトリについて知っていますか?

以下を使用してスクリプトからディレクトリに変更しますcdBAK

cd "$BAK"

それに加えて、2>&1cronjob行に追加してエラー出力をキャプチャしてみてください。

$BAK$私が注目したもう一つのことは、atパラメータを使用したことです--out=。私の考え%VAR%はWindowsと少し似ているようです。出力しますか$BAK$?それともそれはどういう意味ですか$BAK

最後に、このスクリプトを午前2時から午前3時の間で毎分実行しますか?

関連情報