Net: Linux で SMB 共有ディスクにバックアップをとる
NAS も一般的になってきていると思うので、Linux でバックアップを SMB 共有ディスクにとる方法。
nasbackup.sh を適当なディレクトリに設置し、nasaddr と cfgfile の項目を設定し、さらに targetdir で NAS をマウントするディレクトリを指定する。(このディレクトリはあらかじめ作成しておく。)
また、NAS のアカウントは cfgfile で指定するファイルに後に記載するフォーマットで設定する。
なお、実行には、SMB 関係を扱うための準備が Linux 側で必要。
Debian GNU/Linux なら、
# apt-get install smbclient smbfs
しておけば良いと思う。
・nasbackup.sh
#!/bin/sh
LANG=C
# 意味はないが・・・
umask 0066# NAS のアドレスと共有ポイントを指定
nasaddr="//192.168.1.10/share"# NAS のログインアカウントを記載したファイルを指定
cfgfile="/usr/local/etc/backup.conf"# NAS をマウントするディレクトリを指定
targetdir="/root/backuppos/mnt"# ログファイル
logfile="/var/log/nasbackup.log"# NAS をマウント
mount -t smbfs ${nasaddr} ${targetdir} -o credentials=${cfgfile}# エラーチェック
if [ $? -ne 0 ]; then
echo 'Filesystem Mount Error'
exit
ficd /
echo "`date` : Backup Start" >> ${logfile}
tar cfpv "${targetdir}/etc_`date +%a`.tar" etc >> ${logfile} 2>&1
tar cfpv "${targetdir}/home_`date +%a`.tar" home >> ${logfile} 2>&1
tar cfpv "${targetdir}/usr_`date +%a`.tar" usr >> ${logfile} 2>&1
tar cfpv "${targetdir}/var_`date +%a`.tar" var >> ${logfile} 2>&1
echo "`date` : Backup Finish" >> ${logfile}# おまじないみたいなもの
sync
sync
sync# アンマウント
umount ${targetdir}
・/usr/local/etc/backup.conf
username=NASのユーザ名
password=上記に対応するパスワード
なお、NAS のマウントポジションは root 以外見えないようにする。(でないと、バックアップ中にローカルユーザが NAS へアクセスできてしまう。)
これを定期的に実行することで、NAS 上に曜日ごとのファイル名で tar 形式としてバックアップが取れるはず。
