マンション管理人室の PC を月次バックアップ
XCOPY バックアップツール
前回、robocopy について書きましたが、xcopy を使った例も書いてみます。
僕は去年 (2018 年) マンションの理事長を担当していたときに、管理人さんが利用する PC のデータを月次タスクで USB メモリに自動バックアップしておくバッチを仕込みました。
事の発端は、前年の副理事長の頃からマンションの運営対応よりも、管理人さんのヘルプデスク対応の方が多く特に
「保存していたはずのファイルを消したしまった。」
とか、
「間違ってファイルを上書きしてしまった。」
などのファイル復旧に関する問い合わせが多かったため、USB にコピーを取るようにしたのですが、その年末に PC が壊れてデータが消失しました。
その際、USB のバックアップが非常に評価されました。✨
こんな感じで登録していました👇
VBScript と xcopy コマンドでサクッと作っておりました。
'/// 環境設定 /////////////////////
Dim objFSO, objShell
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
'/// コピー元フォルダ指定 /////////////////////
'strDesktop: デスクトップ、strDocuments:ドキュメント
'strUsb:USBメモリ
Dim strDesktop, strDocument,strUsb
strDesktop = objShell.SpecialFolders("Desktop")
strDocuments = objShell.SpecialFolders("MyDocuments")
'/// コピー先フォルダ指定 /////////////////////
strUsb = "I:"
strUsbDesktop = objFSO.BuildPath(strUsb, Left(Date, 4) & Mid(Date, 6, 2) & "_backup")
strUsbDesktop = objFSO.BuildPath(strUsbDesktop, "Desktop")
If Not objFSO.FolderExists(strUsbDesktop) Then
objFSO.CreateFolder(strUsbDesktop)
End If
strUsbDocuments = objFSO.BuildPath(strUsb, Left(Date, 4) & Mid(Date, 6, 2) & "_backup")
strUsbDocuments = objFSO.BuildPath(strUsbDocuments, "Documents")
If Not objFSO.FolderExists(strUsbDocuments) Then
objFSO.CreateFolder(strUsbDocuments)
End If
'/// コピーコマンド生成 と実行 /////////////////////
Dim strCommand
strCommand = "xcopy /S """ & strDesktop & """ " & strUsbDocuments
objShell.Run(strCommand)
strCommand = "xcopy /S """ & strDocuments & """ " & strUsbDocuments
objShell.Run(strCommand)
VBScript なのでバックエンドで処理ができるのですが、最後のコピー処理をわざわざコマンドプロンプトに渡しています。
これは、黒い画面を出して管理人さんにコピー処理を伝えたいからです。コピー中にパソコンを消されたら止まってしまいますので。😅 それにバックアップツールが正常に動いていることを把握してもらいたかったからという意図もあります。
管理人さんには「月初に黒い画面が出るので × 閉じしないでね」とお願いしました。
なお、管理人室でテキストファイルでサクっと作ったので若干違うかも知れません。実際に管理人室の PC に導入したものは %appdata% に設置して、タスクスケジューラで月初にキックさせました。⚽️
今後のため、USB のルートディレクトリには、スクリプト自体のバックアップも取ってあり「有事の際に再利用してくれ。」と伝えました。まぁ、多分管理人さんは設定できないので、僕が設定しに行くことになると思いますが。。
この記事が気に入ったらサポートをしてみませんか?