バックアップ
このコミットが含まれているのは:
コミット
d8ade0d805
|
@ -39,41 +39,6 @@ class Kernel extends ConsoleKernel
|
|||
}
|
||||
}
|
||||
})->everyMinute();
|
||||
$schedule->call(function () {
|
||||
$dbbckp = '/work/storage/backup/mysql/';
|
||||
$flbckp = '/work/storage/backup/file/';
|
||||
$week = 604800; // 1週間
|
||||
$fname = date('Ymd').date('H'); // 日付+時
|
||||
|
||||
// DBのバックアップ
|
||||
exec('/usr/bin/mysqldump --no-tablespaces --user='.config('database.connections.mysql.username').' --host='.config('database.connections.mysql.host').' --password='.config('database.connections.mysql.password').' --databases '.config('database.connections.mysql.database').' > '.$dbbckp.$fname.'_mysql.sql');
|
||||
|
||||
// GZIPでDBを圧縮する(ストレージ為)
|
||||
exec('/bin/gzip '.$dbbckp.$fname.'_mysql.sql');
|
||||
|
||||
// ファイルのバックアップ
|
||||
exec('/bin/tar zcfv '.$flbckp.$fname.'.tar.gz /work/storage/app/private/*');
|
||||
|
||||
// 全てのSQLファイルを読み込むと、古いやつを削除する。
|
||||
foreach (scandir($dbbckp) as $s) {
|
||||
if ($s == '.' || $s == '..') continue;
|
||||
$t = str_replace('_mysql.sql.gz', '', $s); // extの削除
|
||||
$t = preg_replace('/[\w\d]{2}$/', '', $t); // 時間の削除
|
||||
if (strtotime($t) < time()-604800) {
|
||||
exec('/bin/rm -rf '.$dbbckp.$s);
|
||||
}
|
||||
}
|
||||
|
||||
// 全てのTARファイルを読み込むと、古いやつを削除する。
|
||||
foreach (scandir($flbckp) as $s) {
|
||||
if ($s == '.' || $s == '..') continue;
|
||||
$t = str_replace('.tar.gz', '', $s); // extの削除
|
||||
$t = preg_replace('/[\w\d]{2}$/', '', $t); // 時間の削除
|
||||
if (strtotime($t) < time()-604800) {
|
||||
exec('/bin/rm -rf '.$flbckp.$s);
|
||||
}
|
||||
}
|
||||
})->twiceDaily(0, 12);
|
||||
// $schedule->command('inspire')->hourly();
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/bash
|
||||
|
||||
BCKPDIR=`cd backup && pwd`
|
||||
BACKEND=`cd backend && pwd`
|
||||
source ${BACKEND}/.env
|
||||
TIME=`date '+%Y%m%d%H'`
|
||||
|
||||
echo "バックアップフォルダ=${BCKPDIR}"
|
||||
echo "バックエンドフォルダ=${BACKEND}"
|
||||
echo "${TIME} MYSQLバックアップ開始"
|
||||
|
||||
# DBコンテナ
|
||||
DBCONTID=`docker ps -q -f status=running -f name=db`
|
||||
if [ -z "$DBCONTID" ]; then
|
||||
echo "db は起動されていません。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# アプリコンテナ
|
||||
FLCONTID=`docker ps -q -f status=running -f name=app`
|
||||
if [ -z "$FLCONTID" ]; then
|
||||
echo "app は起動されていません。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# DBバックアップ
|
||||
echo "${BACKEND} MYSQLバックアップ開始"
|
||||
DNAME="${TIME}_mysql.sql"
|
||||
echo "ファイル名=${DNAME}"
|
||||
docker exec $DBCONTID mysqldump --no-tablespaces --user=$DB_USERNAME --host=$DB_HOST --password=$DB_PASSWORD --databases $DB_DATABASE > "${BCKPDIR}/mysql/${DNAME}"
|
||||
|
||||
gzip "$BCKPDIR/mysql/$DNAME"
|
||||
|
||||
# ファイルバックアップ
|
||||
echo "${BACKEND} ファイルバックアップ開始"
|
||||
FNAME="${TIME}.tar.gz"
|
||||
echo "ファイル名=${FNAME}"
|
||||
docker exec $FLCONTID tar zcf $FNAME -C / work/storage/app/private
|
||||
mv ${BACKEND}/${FNAME} ${BCKPDIR}/file
|
||||
|
||||
# 7日より古いファイルを削除
|
||||
echo "7日より古いファイルを削除"
|
||||
find ${BCKPDIR}/mysql -type f -name "${TIME}_mysql.sql.gz" -mtime +7 | xargs rm -f;
|
||||
find ${BCKPDIR}/file -type f -name "${TIME}.tar.gz" -mtime +7 | xargs rm -f;
|
|
@ -4,4 +4,4 @@ mkdir -p storage/backup/{file,mysql}
|
|||
|
||||
【docker外】
|
||||
「crontab -e」を実行すると、下記の行列を追加して下さい。
|
||||
0 0,12 * * * /usr/bin/docker cp 3463d3554a6f:/work/storage/backup/mysql/ /var/www/html/kikikanri/backup
|
||||
0 0,12 * * * /var/www/html/kikikanri/backup.sh
|
||||
|
|
新しいイシューから参照