シャドウコピーの設定
目次
ファイルを消しても残ってるサーバー?
少し前に、サイバーセキュリティー担当大臣の桜田義孝氏が「PCを触らない」「USBが何か知らない」と発言して、物議を醸した事があります。
まぁ、大臣といえば、その部門のトップなので、技術的な知識より、マネジメント能力が要求されるという事なんでしょうが、それにしても 「サイバーセキュリティー」を担当していて、それでいいのかしら? とは思います。
ただ、実際はそういう方は非常に多く、私が社内SEをしていた会社も、インターネット上での事業展開のはずなのに、役員と名前が付く人が「FTPってなんだ?」というレベルだったりしますので、上の方にいる人は、何処も似たり寄ったりなのかもしれません。
共有フォルダでの誤削除や上書きの例
「昨日、残業して修正した数値が元にもどってる!?」
朝、ある社員がExcelファイルを開いて、青くなってヘルプを要請してきたのを確認すると、その役員というレベルの人がなぜか共有フォルダから自分のパソコンにファイルを保存しなおし、修正した上で、確認もしないでそれを共有フォルダに上書きした…という顛末でした。
共有フォルダにファイルを置くと、同じファイルを参照するので、誤った値を上書きされたり、削除されてしまったりという事が少なからず起こりますが…
なぜ、わざわざ自分のPCに保存して変更し、なぜ部下に確認もしないで共有フォルダに保存してしまうのか…これなら触らないで居てくれるだけ、 桜田氏の方がましかもしれませんね。
こうした場合に備え、ファイルサーバーを構築するときには、シャドウコピーを取る設定にしておきましょう。
シャドウコピーの設定
シャドウコピーは、一定の時間毎にバックアップコマンドを作動させて、共有フォルダのファイルを別の場所に保存しておく機能です。
例えば、9:00~17:00の勤務時間の会社で、お昼休みが12時からだとすると、8時と12時にバックアップ取得が作動するように設定しておけば、万一、誰かが誤った値を上書きしてしまったり、削除してはいけないファイルを削除してしまったとしても、午前中なら朝8時、午後でしたら12時点のファイルに戻す事が可能になり、被害が最小限で済みます。
保存期間は2週間くらいにしておくと、万一発見が遅れて翌週になってから気がついても、元に戻す事ができます。
もちろん、大容量のハードディスクなら一ヶ月とったりする事も可能ですし、可能なら、このバックアップ先は別の記憶装置にしておくと、万一、本体にトラブルが起こってもデータは守る事ができます。
バックアップのプログラムは、Linuxでしたらこちらのサイト様を参考に
#!/bin/sh
# 変数設定
# バックアップ対象ディレクトリ
SAMBA_DIR=/home/samba
# バックアップ先ディレクトリ
BACKUP_DIR=/home/backup
SNAPSHOT_DIR=$(TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S)
# 最後にバックアップを取得したディレクトリ名を保持しているファイル
ROTATE_DATE=14
# バックアップを実施する
if [ ! -e $LAST_SNAPSHOT_FILE ]; then
mkdir -p $BACKUP_DIR/$SNAPSHOT_MONTH
rsync -av $SAMBA_DIR $BACKUP_DIR/$SNAPSHOT_DIR
echo $SNAPSHOT_DIR > $LAST_SNAPSHOT_FILE
else
LAST_SNAPSHOT_DIR=`cat $LAST_SNAPSHOT_FILE`
mkdir -p $BACKUP_DIR/$SNAPSHOT_MONTH
rsync -av --delete --link-dest=$BACKUP_DIR/$LAST_SNAPSHOT_DIR $SAMBA_DIR $BACKUP_DIR/$SNAPSHOT_DIR
echo $SNAPSHOT_DIR > $LAST_SNAPSHOT_FILE
fi
# バックアップのローテーションを行う
LIST=`ls -1 $BACKUP_DIR | grep GMT`
for s in $LIST
do
DEL_SNAPSHOT_DIRDAY=`echo $s | cut -f2 -d"-" | tr -s "." "/" `
DEL_SNAPSHOT_DIRTIME=`echo $s | cut -f3 -d"-" | tr -s "." ":" `
DEL_SNAPSHOT_DIR=`date -d "$DEL_SNAPSHOT_DIRDAY $DEL_SNAPSHOT_DIRTIME" "+%s"`
NOW_TIME=`date -d "9 hours $ROTATE_DATE days ago" "+%s"`
if [ $DEL_SNAPSHOT_DIR -le $NOW_TIME ]; then
rm -rf $BACKUP_DIR/$s
fi
done
というバックアッププログラムを動かします。
バックアップをシャドウコピーにする
ただ、上記の例では、/home/backup にファイルがバックアップされているだけです。
実際に「誤って消してしまった」「間違って上書きした」事案が発生しても、 backup フォルダを探さなくてはなりません。
もちろん、その探す作業は、Linux のコマンドで行いますから、社内SEがいないとどうにもなりません。
また、 backup フォルダからコピー&ペーストも必要で、これもコマンド操作です。
それでは少々面倒なので、windows側からも簡単に戻せるようにしておきましょう。
ファイル共有あれこれ の、sambaの設定に数行追加して
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = WORKGROUP
security = user
hosts allow = 192.168.1.
interfaces eth0
passdb charset = CP932
display charset = UTF-8
backend = tdbsam
wide links = yes #追加
unix extensions = no #追加
follow symlinks = yes #追加
# including
include = /etc/samba/%G.conf
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[共有フォルダ]
comment = Public Stuff
path = /home/samba
read only = No
guest only = Yes
guest ok = Yes
vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = no
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude = *.tmp ~$*
vfs objects = shadow_copy2 #追加
shadow:snapdir = /home/backup #追加
shadow:basedir = /home/samba #追加
shadow:sort = desc #追加
と、#追加の部分を新たに記述し、sambaを再起動すると
のように、Windowsからファイルサーバーの「プロパティ」をクリックして、「以前のバージョン」タブに移動すると、簡単に以前のファイル構成に辿り着く事ができます。
これが、ただのバックアップとは違う、シャドウコピーです。
シャドウコピーの戻し方
先の例、「昨日、残業して修正した数値が元にもどってる!?」と誰かが真っ青になったとします。
原因を調査し、役員が上書きしたものだと判明すれば、Windowsのフォルダアイコンから以前のバージョンのうち、役員が上書きする前の日時を指定します。
このバージョンを「表示」すると、フォルダの一覧が表示されますので、目的のファイルを別の場所に復元します。
ファイルが2つになったため、両方のファイルを統合します。
これは人力で、相談しながらやってもらう事になります。
最後に、統合ファイルを保存すれば、めでたし、めでたし。
ファイルが削除された場合も、シャドウコピーには残っていますので、これを復旧する事ができます。
こうしたファイル共有に関するスキルがありますので、コンピュータ上のファイル管理で、必ずお役にたてると思います。