仕事で使ってるNextcloud。
グループウェアとかオブジェクトストレージとの連携とかで大変便利なのですが、
ようやく便利さに気が付いたスタッフが出てきてくれてたので、
DBとか最低限のバックアップを毎日やるためにシェルスクリプトを作りました。
広告
Nextcloud の バックアップスクリプト
#!/bin/sh DST="root/nextcloud-bk" DBUSER='******' DBPASSWORD='******' DBHOST='******' DBNAME='******' DATETIME=`date +%Y%m%d` DELDATA=`date -d -7day +%Y%m%d` sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on mkdir /${DST}/${DATETIME} mkdir /${DST}/${DATETIME}/config mkdir /${DST}/${DATETIME}/data mkdir /${DST}/${DATETIME}/themes rsync -Aax /var/www/nextcloud/config/ /${DST}/${DATETIME}/config/ rsync -Aax /var/www/nextcloud/data/ /${DST}/${DATETIME}/data/ rsync -Aax /var/www/nextcloud/themes/ /${DST}/${DATETIME}/themes/ SQL="mysqldump -h $DBHOST -u $DBUSER -p$DBPASSWORD --no-tablespaces $DBNAME | gzip > /$DST/$DATETIME/bksql.dump.gz" eval $SQL tar zcf /${DST}/${DATETIME}-bkup.tar.gz -C / ${DST}/${DATETIME} chmod 664 /${DST}/${DATETIME}-bkup.tar.gz SERVER='******' USER='******' PASS='******' ftp -n <<END open $SERVER user $USER $PASS passive prompt lcd /home/ubuntu/nextcloud-bk mput ${DATETIME}-bkup.tar.gz mdelete ${DELDATA}-bkup.tar.gz bye END rm -r /${DST}/${DATETIME} rm /${DST}/${DATETIME}-bkup.tar.gz sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
こんな感じにした。
ストレージはオブジェクトストレージになってるから、Nextcloud側のディレクトリはバックアップの必要性無いんだけど一応。
大した大きさにならないし。
Nextcloud側にファイルを保存してる場合は、書き方変えたほうが良いと思う。
crontab -e 0 1 * * * /root/next_backup.sh > /root/next_backup.log # service cron restart
あとはcronに登録して終了。
これで毎日深夜にDBのバックアップもやってくれる。
おすすめのコンテンツ
広告