なにこれ
サーバの特定のディレクトリ(/homeとか)を、別のNFSサーバのディレクトリにバックアップしたい。
おことわり
このスクリプトを使用して何かとんでもないことが起きても、すながわは責任をとれないのであしからず。
スクリプト
最初に設定項目がある。
ここでは、自サーバの”/home”の中身を、NFSディレクトリ”192.168.1.2:/volume1/test”の中の”/home”にrsyncする例。
なお、”/home”の中に”sunagawa”ディレクトリが存在することを確認してから、rsyncする仕様。
/usr/local/bin/backup_home.sh [700]
#!/bin/bash # NFS越しにディレクトリをバックアップするbashスクリプト # すながわひろゆき / Studio JamPack, 2017.01.09 # バックアップ元ディレクトリ(末尾に/を付けない) targetdir="/home" # バックアップ元ディレクトリ内に必ず存在するディレクトリ名(チェック用) checkerdir="sunagawa" # バックアップ先NFSディレクトリ(末尾に/を付けない) destnfs="192.168.1.2:/volume1/test" # バックアップ先ディレクトリ(末尾に/を付けない) destdir="/home" # バックアップ先マウントディレクトリ(末尾に/を付けない) mountdir="/mnt/backup" # バックアップ開始 echo "# checking target directory." date # バックアップ元ディレクトリの存在チェック if [ -d ${targetdir}/${checkerdir} ] ; then echo "# target directory: ${targetdir}/" else echo "error: cannot find target directory: ${checkerdir} in ${targetdir} , abort." exit 1 fi # バックアップ先NFSディレクトリのマウントとチェック echo "# mounting target NFS directory." mount -t nfs -o rw,hard,intr,bg ${destnfs} ${mountdir} if [ $? = 0 ] ; then echo "# destination directory: ${destnfs}${destdir}/ as ${mountdir}${destdir}/" else echo "error: cannot find target directory: ${destnfs}${destdir}/ as ${mountdir}${destdir}/ , abort." exit 1 fi # バックアップ実行 echo "# starting backup." rsync -auv --delete ${targetdir}/ ${mountdir}${destdir}/ # バックアップ先NFSディレクトリのアンマウント echo "# done, unmounting target NFS directory." date umount ${mountdir} exit 0
なにかご意見やご要望があれば、お寄せくださいな。