CentOS系でConcrete5.8のfilesとDBのバックアップを仕掛ける。
前回、CloudGarageさんのクラウドサーバを使って、Concrete5.8を構築しましたが、自動でバックアップをどうにかしようかと、頑張りました、シェルスクリプトとcronで。
うまく行くかはお楽しみ(ぇ
tomoacさんのページで紹介されていた、bashを5.8用にカスタマイズと、ある世代以上はファイルを削除する方法をチャレンジ。
んで、早々にどこにbashを置いたらいいのかわからないので、Linux系のフォルダの命名規則を改めて調べたりしました。
基本に忠実に5.7系(削除機能なし)
- まずは、上のサイトにあるbashを、”/usr/local/bin”にありがたくwgetコマンドでダウンロード。
- バックアップフォルダを好きなところに作る。好きなところってどこや!という人は、Webディレクトリではないところ、rootとか?だそうです。
- 頂戴したbashのDBと、concrete5を入れているディレクトリ部分を自分用に変更する。
- 【ここ重要】61行目の$CONCRETE5_DIRの次に”/application”を追加する。5.7系でファイル構成が変わったので忘れずに。
- 実行できる様にアクセス許可を設定する。
chmod 755 concrete5_backup.sh
- crontab -eでcronに以下行を追加。以下は毎日3時に設定しています。
0 3 * * * /usr/local/bin/concrete5_backup.sh
ある世代数作ったらそれ以前は削除する機能をつける
以下の様なコードを作って、bashファイルの一番下に追加しました。
#delete "mx"th generation files
#mx : max number
cnt=0
mx=7
for file in 'ls -lt ${1}*'
do
cnt=$((cnt+1))
mx=$((mx*2))
if [${cnt} -le ${mx}]
then
continue
fi
eval "rm -rf ${files}"
done
うまく動く保証はありませんが、私の改変したbashはこちら。
- 61行目の$CONCRETE5_DIRの次に”/application”を追加する。
- ファイルの数を数えてそれ以外は消すプログラムを自力で作る。
って感じです。linux系の計算の方法知らんかったせいで時間食いましたが。
使えるのかな〜?