n-Archives.net

RoboSync設定事例:増分バックアップ(直近20回,14日以内保存)

目次

シナリオ

Robocopyを用いて、差分バックアップ、増分バックアップを行う方法について、記事「RoboSyncを使って差分・増分バックアップを設定してみる」で紹介しました。今回は、RoboSyncを用いた実践的な増分バックアップの設定をしてみます。以下のようなシナリオを想定してRoboSyncでの設定方法について作ってみました。

 バックアップシナリオ

  • スクリプト実行により増分バックアップを実行。
  • 毎回個別フォルダにバックアップを取得。
  • 1時間毎の自動起動、および、手動による起動を想定。
  • 直近20回、または、14日以内のバックアップは保存する。それ以外のものは削除する。

 

RoboSync設定方法

上記シナリオを実現する増分バックアップ設定例は以下になります。

実行前スクリプト

cd /d Z:\backup\My Data
set TT=%time: =0%
set dest=%date:/=%%TT:~0,2%%TT:~3,2%%TT:~6,2%-inc

実行前スクリプトでは、カレントディレクトリを変更し、コピー先フォルダ名を作成します。コピー先フォルダ名は、"20200112192030-inc" のフォーマットになります。

 

実行後スクリプト

if %errorlevel% ==  0  rmdir /s /q %dest%
powershell -command "dir *-inc | sort -Descending | select -skip 20 | ? { $_.LastWriteTime -lt (Get-Date).AddDays( -14 ) } | del -recurse"

まず、増分バックアップの場合、変更されたファイルが1つもなければ、コピー先フォルダは空のフォルダになるので、残しておく必要がありません。その場合には、コピー先フォルダを削除してしまいます。%errorlevel% は直前に実行したrobocopy の戻り値を参照しています。robocopyの戻り値が 0 というのは、「コピーしたファイルが一つもなかった」ことを示しています。その場合、コピー先フォルダを削除(rmdir)しています。

robocopyの戻り値については、以下記事をご覧ください。

 

次に、2行目の powershellコマンドですが、以下のような流れで処理が行われます。

  1. *-inc というフォルダを取得
  2. ファイル名を降順(新しい順)に並べ替える
  3. 最初の20個についてはスキップし、21個目以降のリストにする
  4. それぞれのフォルダの更新時刻を確認し14日以上前のファイルだけを抽出
  5. 抽出されたフォルダを削除

となります。つまり、「直近20回、または、14日以内のバックアップは保存する。それ以外のものは削除する」となります。

バックアップするフォルダの中に、読み取り専用ファイルや隠しファイルが存在する場合、強制的に削除できるよう、del コマンドに -force オプションを追記し、del -recurse -force のようにしてください。

また、細かい注意ですが、dir のファイル指定の個所は dir * のようにせず、dir *-inc のように明示的にフォルダの一部文字列を指定することをお勧めします。万一の事故で、関係ないファイルやフォルダまで削除してしまうことを防止するためです。

 

いかがでしょうか。是非やってみてください。

 

改版履歴

(2020/2/9) 実行後スクリプトのpowershellでフォルダを削除する箇所において、読み取り専用ファイルや隠しファイルが存在した場合、delコマンドに -force オプションを追記するコメントなどを追加。

 

 

コメントをお送りください
お名前:
コメント:
コメントの公開: