本社ファイルサーバーの自動バックアップ

投稿者: | 2013年8月31日

まだ残暑厳しいですねぇ。事務所が35度オーバーでしんどいラット渡辺です。

弊社では本社と都内の事務センター間をIPQ回線を使ってVPN接続していて、主に本社ファイルサーバーへ事務センターからアクセス用につかっています。

8Mbps程度とそれほど高速ではないですが、安定した接続で特に問題なく使えてます。バックアップも月一回のペースで手元のデスクトップPCに(手動で)行っていました。しかし、事務センターにもファイルサーバーがあるので、自動でバックアップする仕組みがあれば楽になるなあと思い、自動化を決断しました。

なお、本社・都内事務センター双方のファイルサーバーは FreeNAS という FreeBSD ベースの NAS 用 OS です。Windowsファイル共有だけでなく、Apple Share やNFSなど一通りのファイルサーバー機能をサポートしています。設定も手軽で、自宅PCでファイルサーバーを作るにはおすすめです。

本番サーバー → バックアップサーバー というデータ(ファイル)の流れになりますが、今回はバックアップサーバーがわでスクリプトを動かして、本番サーバーからデータを引っこ抜く(PULL)方式にしました。

バックアップ元では、以下の二つのファイル共有を作っています。

  •  manager  (manager ユーザーのみアクセス可能)
  • disk (ゲスト権限でアクセス可能)

ファイルのコピーはSSHを使って暗号化された状態(まあVPN経由なのでなくてもいいのですが)で自動コピーするのでパスフレーズ無しの鍵ペアを作ります。本番サーバーで manager ユーザーのホームディレクトリ直下に .ssh フォルダを作って、そこに作った公開鍵をコピーします。そうすることで、バックアップサーバーから SSHでコマンドを実行してもパスフレーズを聞かれないのでめでたく自動化されます。

以下のようなシェルスクリプト(backup.sh) を用意します。

#!/bin/sh
# configuration
RSYNC=/usr/local/bin/rsyn
REMOTESVR=192.168.X.X
REMOTEUSR=manager
REMOTEDIR_EXEC=/mnt/ZFS/manager
REMOTEDIR_DISK=/mnt/ZFS/disk
LOCAL_DEST=/mnt/zfsvol0/share/backup/
# execute dir
$RSYNC -a $REMOTEUSR@$REMOTESVR:$REMOTEDIR_EXEC $LOCAL_DEST
sudo chmod -R 777 $LOCAL_DEST
sudo chown -R nobody $LOCAL_DEST

試しに、パスフレーズなしでバックアップされるか確認します。


$ sh ./backup.sh

これで、指定ディレクトリ(上記の例では /mnt/zfsvol0/share/backup/ )に無事バックアップされていれば成功です。

これをバックアップサーバー側で cron つかって定常的に動かします。

コメントを残す