Cronjob은 git을 통해 MongoDB 백업을 푸시합니다.

Cronjob은 git을 통해 MongoDB 백업을 푸시합니다.

일:
매일 밤 bash 스크립트를 실행하는 Cronjob을 만듭니다. bash 스크립트는 mongoDB 백업을 수행하고 이를 Git Repo에 푸시해야 합니다.

그래서 cronjob다음 명령을 통해 루트 사용자를 만들었습니다 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 .명령이 실행될 때 리포지토리에 대해 알고 있습니까?

다음을 사용하여 스크립트에서 디렉터리로 변경해 보세요 cd.BAK

cd "$BAK"

그 외에도 2>&1cronjob 줄에 추가하여 오류 출력을 캡처해 보세요.

$BAK$제가 주목한 또 다른 점은 at 매개변수를 사용했다는 것입니다 --out=. 제 생각 %VAR%에는 Windows와 약간 비슷해 보입니다. 출력하시겠습니까 $BAK$? 아니면 그게 무슨 뜻인가요 $BAK?

마지막으로, 이 스크립트를 오전 2시에서 오전 3시 사이에 매분마다 실행하시겠습니까?

관련 정보