ついついデスクトップに色々置いて作業してしまうのですが、この前パソコンが起動しなくてヒヤッとしたので、VBSとタスクスケジューラを使ってバックアップを取ることにしました。
ただサーバーにコピーするだけの簡単なものです。
どんなもの?
・バックアップ先にフォルダを作成し、デスクトップに置いてあるものを全てそこにコピーして入れる
・古いバックアップは自動的に削除する
前提
・タスクスケジューラで2桁時間(10〜23時)に実行させる(その方がフォルダ名の処理をしやすいため)
手順
①バックアップ先のフォルダを作成する
②以下のコードをメモ帳に貼り付け、拡張子を.vbs、文字コードを「UTF-16 LE」にして保存
VBSの保存先はどこでも。わかりやすくバックアップ先でもOK。
On Error Resume Next
Dim WS, FSO, CopyPath, PastePath, PasteName, bkCnt, tskCnt
Set WS = CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
CopyPath = WS.SpecialFolders("Desktop") 'バックアップを取る場所のフルパス
PastePath = "サーバーのパス\バックアップ先\" '貼り付け先のフルパス
bkCnt = 3 'バックアップを残す日数(○日分)
tskCnt = 3 '1日にバックアップを取る回数
'「yyyy/mm/dd hh:mm:ss」を「yyyymmddhh」に変換したものをフォルダ名にし,ファイルをコピーして入れる
PasteName = Replace(Replace(Left(Now(), 13), "/", ""), " ", "")
FSO.CreateFolder PastePath & PasteName
FSO.GetFolder(CopyPath).Copy PastePath & PasteName
'バックアップの個数が日数×回数を超えたら削除処理
If FSO.GetFolder(PastePath).SubFolders.Count >= bkCnt * tskCnt + 1 Then
Dim NowD, DelD
Do Until FSO.GetFolder(PastePath).SubFolders.Count = bkCnt * tskCnt
For Each Fol In FSO.GetFolder(PastePath).SubFolders
If NowD = "" Then NowD = Fol.Name '比較側
If DelD = "" Then DelD = Fol.Name '削除側
'日付が古いものを削除側に入れる
If NowD < DelD Then DelD = NowD
NowD = Fol.Name
Next
FSO.DeleteFolder DelD
DelD = ""
Loop
End If
WS.Popup "バックアップ完了", 5, "完了" '5秒後に自動的に閉じる
③タスクスケジューラでVBSを実行するタスクの作成をする
2桁時間(10〜23時)&tskCntに指定した回数動作するように条件を設定。