treedown’s Report

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

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

(1/2)PCの使用開始と終了時に自動的にバックアップしたい

PCを使い始めたときと、使用を終えて終了するときに、決められたフォルダ内のバックアップを取得したい、という要望を受けて、実現するために考えたことと実施したことをご報告です。

PCの使用時と終了時にデータバックアップ

ユーザから要望を受けて、デスクトップ上に置いてある特定のフォルダについて、自動的にバックアップを取得するジョブを用意することになりました。

ざっくりと概要は以下のような要望でした。

PCを使う前⇒前日(前回)までのデータをバックアップで取得

PCを使い終わって⇒PC使用したときに更新したデータをバックアップで取得

このバックアップを(オフライン環境でも取得できるように)PC内でPC使用のたびにバックアップを取得する、というジョブが自動実行されるようにしたい、ということでした。

自動実行のため、バックアップ自体はrobocopyでもBunBackupでも構わないようでしたので、使い慣れているBunBackupを使って取得することにしました。

BunBackupのジョブを用意

まずはバックアップ対象をPC内に取得するバックアップジョブをBunBackupで用意します。

いちおう起動時と終了時の両方を個別に作成したのですが、これは一つだけでもいいかもしれません。

起動時のバックアップは、以下のように指定しました。

終了時のバックアップは、以下のように指定しました。

バックアップ元となるフォルダは同一で<%USERPROFILE%\Desktop\workFiles>フォルダを対象にします。BunBackupの間接指定を使うと汎用的に「<WIN_デスクトップ>\workFiles」と指定できます。

バックアップ先はユーザがあまり触らないように<%USERPROFILE%\Documents\\Backup\%COMPUTERNAME%>以下に保存するようにしました。これもPC名やユーザ名を問わず「<WIN_マイドキュメント>\Backup\<ENV_COMPUTERNAME>\LOGON」とか「<WIN_マイドキュメント>\Backup\<ENV_COMPUTERNAME>\LOGOFF」と指定してジョブが複数のPCで使い回せるようにしています。

お好みでですが、世代管理機能を利用して、30日間は変更のあったファイルについては差分を保管しておくようにしました。

保管先はバックアップ毎に「<WIN_マイドキュメント>\Backup_Archive\LOGON」と「<WIN_マイドキュメント>\Backup_Archive\LOGOFF」と指定しておきます。

手動実行してこれが正常にファイルのバックアップを取得することを確認しました。

各.lbkファイルは"%USERPROFILE%\Documents\AppFiles\BunBackup\"に保存して、後で参照する時はこのフルパスを使うことにします。

使用開始=ログオンならタスクスケジューラで

自動実行するためのログイン時の実行は簡単です。

タスクスケジューラのトリガーに「ログオン時」というトリガーがあるので、

これを使って、該当のPCユーザがログオンしたタイミングでBunBackupを自動実行させるようにします。

実行するタスクには、コマンド欄に

"C:\Program Files (x86)\Nagatsuki\BunBackup\BunBackup.exe"

と入力し、オプション(引数)として

/AUTO:"%USERPROFILE%\Documents\AppFiles\BunBackup\D2D-TASK.lbk" /APPDATAFOLDER

を指定しました。これでログオンをした際に、テストデータが<%USERPROFILE%\Documents\\Backup\%COMPUTERNAME%\LOGON>に保存されることを確認しました。

使用終了=ログオフ、どうする?

前述のタスクスケジューラの画面にもあるのですが、トリガーに「ログオン時」があっても「ログオフ時」という指定はないので、タスクスケジューラでPCを終了するときにバッチファイルを実行させるということはできないということになります。

(※後々考えると「ユーザセッションからの切断時」というのがこれに該当するような感じもしていますが、検証しておらず、これ以降の方法で実施したので「ユーザセッションからの切断時」は別途動作を確認してみようと思います。)

こういうときは昔はログオフスクリプトというのを使っていました。ログオフスクリプトはグループポリシー(ローカルグループポリシー=gpedit.msc)で設定することができます。今回もログオフスクリプトの仕組みを使ってWindows終了時のバックアップを自動化することにしました。

次回へ

これ以降は作成中のため、次回に続きます。

ログオフスクリプトを使うことになるので、Windows Pro以上のエディション限定の方法となるのですが、対象の環境では問題なかった(Proエディションだった)ため、この方法で完了させました。