ZFSでsnapshotをローテートしながら取得

ZFS で snapshot をローテーションしながら取得していく script を参考に。


Solarisではjotとかseqとかは無い(あえて入れなければ)ので、jotの部分が上手く動かない。


そこで、ちょっと改良。

#!/usr/bin/bash

PATH=/sbin:$PATH

mountpoint=$1
snapshot_name=$2
level=$3
option=$4

zfs_opt=
if [ "$option" = "recursive" ]; then
        zfs_opt=-r
fi

## destroy outdated snapshot
zfs destroy $zfs_opt "$mountpoint@`expr $level - 1`$snapshot_name"

## rotate snapshot
i=`expr $level - 2`
while test $i -ge 0
do
        i_plus1=`expr $i + 1`
        zfs rename $zfs_opt "$mountpoint@$i$snapshot_name" "$mountpoint@$i_plus1
$snapshot_name"
        i=`expr $i - 1`
done

## take snapshot
zfs snapshot $zfs_opt "$mountpoint@0$snapshot_name"

jotコマンドの結果を使ってforでループさせていた部分を、whileを使ったループに置き換えてみた。
他の使い方はオリジナル通り。