#!/bin/bash

#
# 各種設定
#

# ユーザー・パスワード取り込み
# BK_USERとBK_PASSはbackup_secretに書いてある#!/bin/bash
source /usr/local/etc/backup_secret

# CPU使用率
BK_CPUPOWER=15
BK_COPYBWDT=6400k
#BK_CPUPOWER=40    ← WordPressの6.7GBをバックアップするときはこれ
#BK_COPYBWDT=9600k ← 家族用のブログで更新頻度が低いので週次で実施

BK_BASEDIR=/root/work/backup
BK_DESTDIR=/root/work/backup/linkstation
BK_PREFIX=hogehoge
BK_SUFFIX="date +%Y-%m-%d-%H-%M-%S"

BK_RETENTIONDAYS=7
#BK_RETENTIONWEEKS=5 ← WordPressは5週間保管

#
# 関数
#

function OutputSeconds () {
	i=$SECONDS
	((sec=i%60, min=(i%3600)/60, hrs=i/3600))
	echo $(printf "経過時間 %d:%02d:%02d" $hrs $min $sec)
}

function SlowCopy() {
	SC_BASE=`basename $1`
	SC_NAME=${SC_BASE%.*}
	SC_EXT=${SC_BASE##*.}

	SC_DESTNAME=$BK_DESTDIR/$BK_PREFIX.$SC_NAME.`$BK_SUFFIX`.$SC_EXT

	cat $1 | pv -q -L $BK_COPYBWDT > $SC_DESTNAME
}

function RetentionBaseName() {
	SC_BASE=`basename $1`
	SC_NAME=${SC_BASE%.*}
	SC_EXT=${SC_BASE##*.}

	SC_DESTNAME=$BK_DESTDIR/$BK_PREFIX.$SC_NAME.*.$SC_EXT

	echo $SC_DESTNAME
}


# 処理開始時刻の表示と記録
echo "処理開始" `date`


#
# バックアップデーター作成
#

# Kopano
echo "Kopano  " `OutputSeconds`

rm $BK_BASEDIR/kopanoserver.dmp
rm $BK_BASEDIR/kopano.zip

cpulimit -l $BK_CPUPOWER -f -- \
 mysqldump --single-transaction --routines kopanoserver > $BK_BASEDIR/kopanoserver.dmp

cpulimit -l $BK_CPUPOWER -f -- \
 zip -rq $BK_BASEDIR/kopano.zip \
  $BK_BASEDIR/kopanoserver.dmp \
  /var/lib/kopano/attachments


# Alfresco
echo "Alfresco" `OutputSeconds`

rm $BK_BASEDIR/alfresco.dmp
rm $BK_BASEDIR/alfresco.zip

cpulimit -l $BK_CPUPOWER -f -- \
 mysqldump --single-transaction alfresco > $BK_BASEDIR/alfresco.dmp

cpulimit -l $BK_CPUPOWER -f -- \
 zip -rq $BK_BASEDIR/alfresco.zip \
  $BK_BASEDIR/alfresco.dmp \
  /usr/share/alfresco/alf_data/contentstore \
  /usr/share/alfresco/alf_data/contentstore.deleted


#
# データ転送と世代管理
#

echo "Transfer" `OutputSeconds`

mount -o username=$BK_USER,password=$BK_PASS,vers=2.0 //linkstation/backup $BK_DESTDIR

SlowCopy $BK_BASEDIR/kopano.zip   $BK_DESTDIR
SlowCopy $BK_BASEDIR/alfresco.zip $BK_DESTDIR

find $BK_DESTDIR/ -mtime +${BK_RETENTIONDAYS-1} -name $BK_PREFIX.kopano.*.zip   | xargs rm -f
find $BK_DESTDIR/ -mtime +${BK_RETENTIONDAYS-1} -name $BK_PREFIX.alfresco.*.zip | xargs rm -f
# WordPressを週次バックアップにしようとして計算式の書き方を変更
#find $BK_DESTDIR/ -mtime +$(($BK_RETENTIONWEEKS*7-1)) -name $BK_PREFIX.wordpress.*.zip | xargs rm -f

umount $BK_DESTDIR


#
# 終了処理
#

echo "処理終了" `date`
OutputSeconds
