毎日、毎月 LVM のスナップショットを作成する bash スクリプト

Pocket

仕事上必要になったので作成してみました。変数に代入するときのエスケープ処理がうまくできなくて半分力技。

このスクリプトの目的は

  • 毎日 7 世代分のスナップショットを保持する
  • 毎月 1 世代分のスナップショットを保持する

以下は毎日 7 世代分のスナップショットを保持するスクリプトの例。

#!/bin/bash

TARGET_LV=/dev/vg_str1/LogVol01
TARGET_LV_DIR=/dev/vg_str1/
LV_SIZE=20G
SNAPSHOT_NAME_PREFIX=snap-daily

current_time=`date +"%Y%m%d%H%M%S"`

count=`find ${TARGET_LV_DIR} -name "${SNAPSHOT_NAME_PREFIX}*" | wc -l`

if [ "${count}" -ge 7 ]; then
  find ${TARGET_LV_DIR} -name "${SNAPSHOT_NAME_PREFIX}*" | sort | while read line; do
    echo ${line} will be deleted
    lvremove -f ${line}
    if [ "${count}" -eq 7 ]; then
      break
    fi
    let count="${count}-1"
  done
fi

lvcreate --snapshot --size=${LV_SIZE} --name "${SNAPSHOT_NAME_PREFIX}-${current_time}" ${TARGET_LV}

crontab を編集する。

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/tripwire/sbin:/root/bin
0 5 * * * /root/lvbackup-daily.sh
0 0 1 * * /root/lvbackup-monthly.sh

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください