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


この記事の所要時間: 146

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

このスクリプトの目的は

  • 毎日 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=<code>date +&quot;%Y%m%d%H%M%S&quot;</code>

count=<code>find ${TARGET_LV_DIR} -name &quot;${SNAPSHOT_NAME_PREFIX}*&quot; | wc -l</code>

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

lvcreate --snapshot --size=${LV_SIZE} --name &quot;${SNAPSHOT_NAME_PREFIX}-${current_time}&quot; ${TARGET_LV}

crontab を編集する。

投稿者紹介

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

人気の記事

コメント

コメントを残す

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

PAGE TOP