Задача Cron для отправки резервного копирования MongoDB через git

Задача: Создать задание Cron, которое запускает сценарий bash один раз каждую ночь. Сценарий bash должен выполнить резервное копирование mongoDB и отправить его в репозиторий Git.

Поэтому я создал 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
задан 16 November 2015 в 15:36
1 ответ

Anda perlu mengubah direktori ke "$ BAK" sebelum mengeluarkan perintah git.

Anda secara eksplisit menulis backup ke $ BAK $ tetapi ketika Anda menjalankan gid add. Anda akan berada di direktori home dari pengguna yang menjalankan tugas cron. Dalam hal ini akan menjadi / root .


Berikut adalah skrip uji

pwd >/tmp/atest.out
touch ./atest.file

Ketika dijalankan dari crontab root dengan

* * * * * /home/iain/atest

Isi /tmp/atest.out

/ root

Jadi di mana ./atest.file

ls -l /home/iain/atest.file
ls: cannot access /home/iain/atest.file: No such file or directory

Hmm

ls -l /root/atest.file
-rw-r--r--. 1 root root 0 Nov 16 13:24 /root/atest.file

Bingo !. Tidak masalah jika Anda menjalankan skrip dari direktori home git. Direktori kerja dalam hal ini adalah / root.

/usr/bin/git add .

sedang menambahkan direktori kerja saat ini, yang kecuali Anda telah mengubahnya adalah / root .

-1
ответ дан 4 December 2019 в 10:53

Теги

Похожие вопросы