環境
さくらVPS
CentOS7
Docker version 1.13.1
docker-compose version 1.18.0
参考サイト様
おしゃれなMarkdown対応wiki : Growiを構築運用する - Qiita
Growiのバックアップとリカバリの手順 - Qiita
第54回「SORACOM応用編!ラズベリーパイからDropboxへファイルをアップロード(1)Dropbox-Uploader」 | Device Plus - デバプラ
【Dropbox】scriptを使用してのファイル転送処理 - Qiita
バックアップファイルの作成
以下のコマンドでアップロードファイルをバックアップする。
tar -C {Growiセットアップパス} -czf uploads.tar.gz public/uploads
以下のコマンドでデータベースをバックアップする。
# mongodump -d {Growiデータベース名} --gzip --archive=dbdump.gz
バックアップファイルを自動で生成するためのスクリプトを書く
毎日AM7:00にバックアップを取得するスクリプト。バックアップデータは全て1つのアーカイブにまとめる。 このままだとバックアップが溜まる一方になってしまうため、7日前のバックアップを削除するコマンドも実行する。
# cd /usr/local/bin # vi backup.sh
INSTALL_PATH=/home/tpp/wiki/growi-docker-compose/growi BACKUP_PATH=/home/tpp/backup TODAY=`date +"%Y%m%d"` # Backup tar -C ${INSTALL_PATH}/public -cf ${BACKUP_PATH}/${TODAY}.tar uploads mongodump -d growi --gzip --archive=/tmp/dbdump.gz --quiet tar -C /tmp -uf ${BACKUP_PATH}/${TODAY}.tar dbdump.gz gzip -f ${BACKUP_PATH}/${TODAY}.tar rm -fR /tmp/dbdump.gz # Delete OldBackups find ${BACKUP_PATH} -name "*.tar.gz" -mtime +7 -delete
上をbackup.shに書き込む
# chmod u+x backup.sh
でbackup.shに権限を与えて
# crontab -e
0 7 * * * /home/tpp/wiki/backup.sh
cronに以上の設定を追加
Dropboxへファイル転送
アップロードしたいディレクトリに移動してスクリプトファイルをDL
curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
ダウンロードできたら、実行権限を与えて、スクリプトを実行。
chmod +x dropbox_uploader.sh ./dropbox_uploader.sh
めんどくさいから 第54回「SORACOM応用編!ラズベリーパイからDropboxへファイルをアップロード(1)Dropbox-Uploader」 | Device Plus - デバプラ を見て
ファイル転送も自動化
色々書くのめんどくさ、 できたものがこちら!
INSTALL_PATH=/home/tpp/wiki/growi-docker-compose/growi BACKUP_PATH=/home/tpp/backup TODAY=`date +"%Y%m%d"` # Backup tar -C ${INSTALL_PATH}/public -cf ${BACKUP_PATH}/${TODAY}.tar uploads mongodump -d growi --gzip --archive=/tmp/dbdump.gz --quiet tar -C /tmp -uf ${BACKUP_PATH}/${TODAY}.tar dbdump.gz gzip -f ${BACKUP_PATH}/${TODAY}.tar rm -fR /tmp/dbdump.gz # Delete OldBackups find ${BACKUP_PATH} -name "*.tar.gz" -mtime +7 -delete cd /home/tpp ./dropbox_uploader.sh delete backup ./dropbox_uploader.sh upload backup backup
追記
INSTALL_PATH=/home/tpp/wiki/growi-docker-compose/growi BACKUP_PATH=/home/tpp/backup TODAY=`date +"%Y%m%d"` TODAY2=`date +"%Y%m%d"+"g"` # Backup tar -C ${INSTALL_PATH}/public -cf ${BACKUP_PATH}/${TODAY}.tar uploads mongodump -d growi --gzip --archive=/tmp/dbdump.gz --quiet tar -C /tmp -uf ${BACKUP_PATH}/${TODAY}.tar dbdump.gz gzip -f ${BACKUP_PATH}/${TODAY}.tar rm -fR /tmp/dbdump.gz cd /home/tpp docker run -it --rm --link growidockercompose_mongo_1 --network growidockercompose_default --volume $(pwd):/backup mongo bash -c "mongodump -v --host growidockercompose_mongo_1 --db growi --out /backup" tar -cvf ${TODAY2}.tar growi gzip ${TODAY2}.tar mv /home/tpp/${TODAY2}.tar.gz ${BACKUP_PATH} # Delete OldBackups find ${BACKUP_PATH} -name "*.tar.gz" -mtime +7 -delete cd /home/tpp ./dropbox_uploader.sh delete backup ./dropbox_uploader.sh upload backup backup
記事データのバックアップができてなかったので色々追加しました。
本当は一気にtarでまとめてしまいたかったのですがコマンドオプションがうまく扱えないため死亡。
そもそもまとめる必要ない
これに割いてる時間もないので、結果やっつけになりましたがちゃんと取れてはいるのでまあ良しとしましょう。
追記2
そもそもこれじゃバックアップできてないらしい(自分は出来てると思うんだけど試すのがめんどくさい) mongodbのリストア機能を使って別のバックアップ用コンテナ作ってごちゃごちゃやらんといけんらしいです が、めんどくさいのであとは後輩に任せることにします