CentOS系でConcrete5.8のfilesとDBのバックアップを仕掛ける。

前回、CloudGarageさんのクラウドサーバを使って、Concrete5.8を構築しましたが、自動でバックアップをどうにかしようかと、頑張りました、シェルスクリプトとcronで。

うまく行くかはお楽しみ(ぇ

tomoacさんのページで紹介されていた、bashを5.8用にカスタマイズと、ある世代以上はファイルを削除する方法をチャレンジ。

んで、早々にどこにbashを置いたらいいのかわからないので、Linux系のフォルダの命名規則を改めて調べたりしました。

基本に忠実に5.7系(削除機能なし)

  1. まずは、上のサイトにあるbashを、”/usr/local/bin”にありがたくwgetコマンドでダウンロード。
  2. バックアップフォルダを好きなところに作る。好きなところってどこや!という人は、Webディレクトリではないところ、rootとか?だそうです。
  3. 頂戴したbashのDBと、concrete5を入れているディレクトリ部分を自分用に変更する。
  4. 【ここ重要】61行目の$CONCRETE5_DIRの次に”/application”を追加する。5.7系でファイル構成が変わったので忘れずに。
  5. 実行できる様にアクセス許可を設定する。

    chmod 755 concrete5_backup.sh

  6. 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はこちら。

concrete5_backup.sh

  1. 61行目の$CONCRETE5_DIRの次に”/application”を追加する。
  2. ファイルの数を数えてそれ以外は消すプログラムを自力で作る。

って感じです。linux系の計算の方法知らんかったせいで時間食いましたが。

使えるのかな〜?