シェルスクリプト
説明 [#p862bee7]
ローカルで作成したスナップショットをリモートに送信するシェルスクリプトです。
リモート上でデータが存在すると、データを受け取ることができないので一旦SSHでログインして削除しています。
データを先に削除する仕組みですので、ご自身の環境でご利用される場合はくれぐれもご注意ください。
内容 [#wb7d2dbc]
#!/bin/bash
#########################################################################
# [事前準備]
# 1.バックアップサーバー上でSSHUSRのauthorised_keyに公開鍵を登録する
# 2.バックアップサーバー上でvisudoを実行して、ユーザーを追加、/sbin/zfsを追加する
# 3.ローカルとバックアップサーバー上のZFSディレクトリを確認しておく
#########################################################################
export LANG=c
### Common vars
#ZFSバックアップサーバー
ZFSSVR=192.168.◯.◯
#ZFSバックアップサーバー上のファイルシステム
ZFSSVRD=zfs1/$1
#SSH,SUDO実行ユーザー
SSHUSR=zfsuser
#ローカルのバックアップ対象のZFSファイルシステム
ZFSD01=zfs1/$1
#スナップショット名
SNPNAME=snapshot01
#バックアップの際の送信先ファイルシステム振り分け用
YOUBI01=`date +\%a`
#YOUBI01=Sun
### Backup Scripts
ping -c 3 ${ZFSSVR}
# バックアップサーバー上のバックアップデータの削除
/usr/bin/ssh -t ${SSHUSR}@${ZFSSVR} "sudo /sbin/zfs destroy ${ZFSSVRD}/${YOUBI01}@${SNPNAME}"
# ローカル上でスナップショットの作成
/sbin/zfs snapshot ${ZFSD01}@${SNPNAME}
# ローカルのスナップショットをバックアップサーバーへ送信
/sbin/zfs send ${ZFSD01}@${SNPNAME} | /usr/bin/ssh ${SSHUSR}@${ZFSSVR} sudo /sbin/zfs recv -F ${ZFSSVRD}/${YOUBI01}
# ローカルのスナップショットの削除
/sbin/zfs destroy ${ZFSD01}@${SNPNAME}