treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

OutlookのバックアップをWindows標準機能だけで簡単に自動実行する

PCバックアップのためには日ごろからの準備が欠かせません。
今日はOutlook環境のバックアップを自動化する方法についてご報告します。

動作確認環境は

  • Windows8.1 Professional
  • Office 2013

で確認しました。
がWindows7&Office2010付属のOutlook2010でも同様の方法は使えますし、おそらくOffice2016になってもパス情報が変わらなければ使うことはできると思います。

この方法は別のソフトウェアをインストールせずバッチファイルとWindowsの標準機能だけで実現しますので、インストールできない環境やUser権限(Domain Users権限)で十分に動作します。

どういうバックアップにしようか検討

バックアップのためにはOutlookバックアップバッチを使います。

Outlookは原則としてデータを.pstファイルに保持しますが、一部の情報(ルールなどの設定は)レジストリに保管しています。また各メールに自動設定されている署名データは.pstファイル外の別のパス上のファイルで保持しています。
このため丸ごとバックアップのためにはレジストリ取得と署名ファイルのコピーが必要になります。
他メディアへのバックアップの前段階と考えても、一旦同じPC内の別フォルダに上記2項目をバックアップしておくことで、バックアップがやりやすくなりますし、他のPCに移行する場合でもそのデータを持ち出せば環境がすぐ移行できるという点がメリットになります。

そこで今回は、現在利用中のOutlook環境をマイドキュメント内のフォルダ名「Outlook ファイル」に集約してしまう感じでバックアップを用意してみましょう。

フォルダ名「Outlook ファイル」フォルダ内の構成は

通常は「%メールアカウント%.pst」ファイルが単一で保管されています。このファイルがメール環境のデータを保持している.pstファイルです。アーカイブ設定をした人は「archive.pst」ファイルも存在していることになります。

これに、レジストリからエクスポートしたOutlook設定が含まれる.regファイルと別の場所にある「signetures」を丸ごとコピーしてきて、ひとまとめにしてしまおう、という計画です。
取得後にざっくりこんな感じになります。
-------------------------------------------------------------------------------------------
    C:\Users\%USERNAME%\Documents\Outlook ファイル
               ├─archive.pst
               ├─%メールアカウント%.pst
               │
               ├─O2010Profile.reg
               │
               └─signetures
                  └─署名ファイル.htm
                  └─署名ファイル.rtf
                  └─署名ファイル.txt
-------------------------------------------------------------------------------------------

それではバッチファイルを

早速ですが、バッチファイルです。適当な名前で作成して保管します。
----------------------------------------------
@echo off
rem
rem Outlook2010のアカウント情報バックアップとして、レジストリーの
rem HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles
rem をエクスポートしています。
rem タスクスケジューラで本バッチを自動実行推奨です。
rem
set regKey=HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles
set BKFOLDER=%USERPROFILE%\Documents\Outlook ファイル
set BKFNAME=O2010Profile.reg
reg export "%regKey%" "%BKFOLDER%\%BKFNAME%" /y

rem 署名データファイルを取捨選択する場合にはcopyコマンドでファイルを指定する。
rem フォルダをまとめて取得する場合にはxcopyで取得
rem copy /Y C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Signatures "%BKFOLDER%\signetures"
xcopy /Y C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Signatures "%BKFOLDER%\signetures\"

rem 後処理
set regKey=
set BKFOLDER=
set BKFNAME=
----------------------------------------------

※追記:

Outlook2013の場合以下のバッチになります。

--------------------------------------------------------------

@echo off
rem 
rem タスクスケジューラで本バッチを自動実行推奨です。
rem 
set regKey=HKCU\Software\Microsoft\Office\15.0\Outlook\Profiles
set BKFOLDER=%USERPROFILE%\Documents\Outlook ファイル
set BKFNAME=O2013Profile.reg
reg export "%regKey%" "%BKFOLDER%\%BKFNAME%" /y

rem 署名データファイルを取捨選択する場合にはcopyコマンドでファイルを指定する。
rem フォルダをまとめて取得する場合にはxcopyで取得
rem copy /Y C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Signatures "C:\Users\%USERNAME%\Documents\Outlook ファイル\signetures"
xcopy /Y C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Signatures "%BKFOLDER%\signetures\"

rem 後処理
set regKey=
set BKFOLDER=
set BKFNAME=

--------------------------------------------------------------

Outlook2016の場合は以下

--------------------------------------------------------------

@echo off
rem 
rem Outlook2016レジストリキー指定
set regKey=HKCU\\Software\Microsoft\Office\16.0\Outlook\Profiles\Outlook
rem バックアップパスの指定
set BKFOLDER=%USERPROFILE%\Documents\Outlook ファイル
set BKFNAME=Outlook2016Profile.reg
reg export "%regKey%" "%BKFOLDER%\%BKFNAME%" /y

xcopy /Y C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Signatures "%BKFOLDER%\Signatures\" /D /I

rem 後処理
set regKey=
set BKFOLDER=
set BKFNAME=

--------------------------------------------------------------

※追記ここまで

このバッチファイルをどこかに保管して、ログイン時に自動実行されるようタスクスケジューラを設定します。

タスクスケジューラの設定

簡単にタスクスケジューラ設定画面を掲載しておきます。

図1:全般タブ

f:id:treedown:20160105132930p:plain

ここでタスク実行に使うアカウントを設定しておきます。ユーザはOutlookを利用しているユーザと合致させるようにします。(レジストリキーで「HKEY_CURRENT_USER」を使っていますのでカレントユーザのOutlook環境が取得されるためです。)

図2:トリガータブ

f:id:treedown:20160105132948p:plain

トリガはログオン時を指定しておきます。

図3:トリガーの詳細設定

f:id:treedown:20160105133016p:plain

複数人で利用する共有PCだと任意のユーザという選択肢もありですね。ここでは単一ユーザだけを対象にしています。

図4:操作タブ

f:id:treedown:20160105133031p:plain

ここで先ほど保存したバッチファイルを指定することで、ログオン時に指定したバッチファイルが実行されるようになります。

設定後、ログオンをしてみて、ファイルが取得されているかどうかを確認します。

ここまで実行すると、タスクスケジューラの力でOutlookのバックアップがログイン時に自動実行されます。ログイン時であればOutlookを起動していてファイルがロックされる、ということもない(少ない?)はずですから一番いいタイミングじゃないかと個人的には思っています。

メール環境はなかなか取り返しづらいデータの一つですので、この方法でまずはD2Dバックアップを定期的にかつ自動的に取得しておく、というタスクを動作させておくといざというときの役に立ちます。(しかもPC利用中は邪魔をしないし邪魔にならない。)

参考になれば幸いです。