2011/06/21

ZFSSnapshotDaily.vbs

Set shell = WScript.CreateObject("WScript.Shell")
' yyyy/mm/ddをyyyymmddに8桁の固定長で変換する。例えば2010/6/1なら20100601となる。
strDate = Year(Now) & Right("0" & Month(Now), 2) & Right("0" & Day(Now), 2)
' SSHでZFSのスナップショットを作成するコマンドを送る。名前は8桁固定長の今日の日付
s = "C:\putty\plink.exe -ssh -pw q root@192.168.1.3 zfs snapshot tank/tamagoyaki@"& strDate &""
' 0は無表示で実行、7ならアクティブ無しの最小化で実行
shell.Run s, 0

Dim x, a
' 24回(約一ヶ月前分まで)繰り返す
For x = 1 to 24
' 7日前のスナップショットから消す
a = 6 + x
' 例えば現在の日付が2010/06/01であれば最初のループではy=2010 m=5 d=25となる(一週間前)
y = Year(Now)
m = Month(Now)
d = Day(Now)-a
' DataSerial関数を使って認識可能な日付形式に戻す
DelSnapDay = DateSerial(y, m, d)
' yyyy/mm/ddをyyyymmddに8桁の固定長で変換する。日付は削除するスナップショットの日付。
strDate = Year(DelSnapDay) & Right("0" & Month(DelSnapDay), 2) & Right("0" & Day(DelSnapDay), 2)
' SSHでZFSのスナップショットを削除するコマンドを送る
s = "C:putty\plink.exe -ssh -pw q root@192.168.1.3 zfs destroy tank/tamagoyaki@"& strDate &""
shell.Run s, 0
Next


' FreeBSDあるいはFreeNASで使えるZFSのスナップショットを毎日取るvbsスクリプトです。
' 何らかの理由でサーバのCronではなく、クライアントのWindowsタスクで毎日スナップショットを取る方法例
' tamagoyakiはここでは共有ディレクトリ名(とユーザー名)です

0 件のコメント:

コメントを投稿