Windowsのrobocopy.exeは機能が豊富でお手軽なので何かと重宝しています
今回はそんなrobocopyで差分バックアップの機能ももったバッチファイルを作成してみました
プログラムの内容としては
- 実行日の曜日を確認する
- 土曜日ならフルバックアップを実行する(/MIR)
- それ以外の曜日なら差分バックアップを実行する(/A)
- バックアップ先は曜日ごとに分ける
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
; html-script: false ] @echo off : Kimiaki MATSUOKA@RootLinks Co., Ltd : 2014/02/14 (C) RootLinks Co., Ltd FOR /F "skip=1" %%A IN ('WMIC Path Win32_LocalTime Get DayOfWeek' ) DO ( set DOWNo=%%A goto start ) :start if %DOWNo%==0 set DOW=Sun if %DOWNo%==1 set DOW=Mon if %DOWNo%==2 set DOW=Tue if %DOWNo%==3 set DOW=Wed if %DOWNo%==4 set DOW=Thu if %DOWNo%==5 set DOW=Fri if %DOWNo%==6 set DOW=Sat set Bsource=D:\share set Bdestination=\\backupnas\backup$\%DOW%\share set Blog=\\bknas\bk$\RoboCopy_%DOW%.log if %DOW%==Sat ( robocopy %Bsource% %Bdestination% /COPYALL /MIR /R:3 /W:5 /LOG:%Blog% ) else ( rd /S /Q %Bdestination% robocopy %Bsource% %Bdestination% /E /COPYALL /M /R:3 /W:5 /LOG:%Blog% ) |
土曜日にとったバックアップをベースに以降はアーカイブビットの立ったファイルを差分として取得しています
これをタスクスケジューラーに登録して毎日実行すれば1周間前までなら必要なファイルを復元することができると思います
なお、このバッチファイルを机上で作成しただけで実際には運用していません(^^;;
不具合が合った場合はゴメンナサイm(_ _)m
応用としては毎月1日にフルバックアップで月末まで差分をとれば1ヶ月のバックアップがもてると思います
robocopy.exe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
; html-script: false ]------------------------------------------------------------------------------- ROBOCOPY :: Windows の堅牢性の高いファイル コピー ------------------------------------------------------------------------------- 使用法:: ROBOCOPY コピー元 コピー先 [ファイル [ファイル]...] [オプション] コピー元 :: コピー元ディレクトリ (ドライブ:\パスまたは \\サーバー \共有\パス)。 コピー先 :: コピー先ディレクトリ (ドライブ:\パスまたは \\サーバー \共有\パス)。 ファイル :: コピーするファイル (名前/ワイルドカード: 既定値は「*.*」 です) :: :: コピー オプション: :: /S :: サブディレクトリをコピーしますが、空のディレクトリはコピ ーしません。 /E :: 空のディレクトリを含むサブディレクトリをコピーします。 /LEV:n :: コピー元ディレクトリ ツリーの上位 n レベルのみをコピーし ます。 /Z :: 再起動可能モードでファイルをコピーします。 /B :: バックアップ モードでファイルをコピーします。 /ZB :: 再起動可能モードを使用します。アクセスが拒否された場合、 バックアップ モードを使用します。 /EFSRAW :: 暗号化されたすべてのファイルを EFS RAW モードでコピーし ます。 /COPY:コピーフラグ :: ファイルにコピーする情報 (既定値は /COPY:DAT)。 (コピーフラグ: D= データ、A= 属性、T= タイムスタンプ)。 (S= セキュリティ =NTFS ACL、O= 所有者情報、U= 監査情報)。 /DCOPY:T :: ディレクトリ タイムスタンプをコピーします。 /SEC :: セキュリティと共にファイルをコピーします (/COPY:DATS と 同等)。 /COPYALL :: ファイル情報をすべてコピーします (/COPY:DATSOU と同等)。 /NOCOPY :: ファイル情報をコピーしません (/PURGE と共に使用すると便 利) /SECFIX :: スキップしたファイルも含むすべてのファイルのファイル セ キュリティを修正します。 /TIMFIX :: スキップしたファイルも含むすべてのファイルのファイル時刻 を修正します。 /PURGE :: 既にコピー元に存在しないコピー先のファイル/ディレクトリ を削除します。 /MIR :: ディレクトリ ツリーをミラー化します (/E および /PURGE と 同等) /MOV :: ファイルを移動します (コピー後にコピー元から削除)。 /MOVE :: ファイルとディレクトリを移動します (コピー後にコピー元か ら削除)。 /A+:[RASHCNET] :: コピーされたファイルに指定の属性を追加します。 /A-:[RASHCNET] :: コピーされたファイルから指定の属性を削除します。 /CREATE :: ディレクトリ ツリーと長さ 0 のファイルのみを作成します。 /FAT :: 8.3 FAT ファイル名のみを使用してコピー先ファイルを作成し ます。 /256 :: 256 文字を超える非常に長いパスのサポートをオフにします。 /MON:n :: コピー元を監視し、n 回を超える変更があった場合に再度実行 します。 /MOT:m :: コピー元を監視し、変更があった場合 m 分間再度実行します。 /RH:hhmm-hhmm :: 実行時間 - 新しいコピーを開始できる時刻です。 /PF :: 実行時間をファイルごと (パスごとではない) に確認します。 /IPG:n :: 低速回線で帯域幅を解放するためのパケット間ギャップ (ミリ 秒) 。 /SL :: 対象ではなくシンボリック リンクをコピーします。 /MT[:n] :: n 個のスレッドのマルチスレッド コピーを実行します (既定値 8)。 n は 1 から 128 までの値である必要があります。 このオプションは、/IPG および /EFSRAW オプションと互換性 がありません。 パフォーマンスの向上のため、/LOG オプションを使用して出力 をリダイレクトします。 :: :: ファイル選択オプション: :: /A :: アーカイブ属性が設定されているファイルのみをコピーしま す。 /M :: アーカイブ属性のあるファイルのみをコピーし、リセットしま す。 /IA:[RASHCNETO] :: 指定されたいずれかの属性が設定されているファイルのみを含 みます。 /XA:[RASHCNETO] :: 指定されたいずれかの属性が設定されているファイルを除外し ます。 /XF ファイル [ファイル]... :: 指定された名前/パス/ワイルドカードに一致 するファイルを除外します。 /XD ディレクトリ [ディレクトリ]... :: 指定された名前/パスに一致するディレクト リを除外します。 /XC :: 変更されたファイルを除外します。 /XN :: 新しいファイルを除外します。 /XO :: 古いファイルを除外します。 /XX :: コピー先にだけ存在するファイルとディレクトリを除外し ます。 /XL :: コピー元にだけ存在するファイルとディレクトリを除外し ます。 /IS :: 同一ファイルを含みます。 /IT :: 異常なファイルを含めます。 /MAX:n :: 最大ファイル サイズ - n バイトより大きいファイルを除外し ます。 /MIN:n :: 最小ファイル サイズ - n バイトより小さいファイルを除外し ます。 /MAXAGE:n :: 最長ファイル有効期間 - n 日より古いファイルを除外します。 /MINAGE:n :: 最短ファイル有効期間 - n 日より新しいファイルを除外しま す。 /MAXLAD:n :: 最大最終アクセス日 - n で指定する値以後に使用していない ファイルを除外します。 /MINLAD:n :: 最小最終アクセス日 - n で指定する値以後に使用されたファ イルを除外します。 (n < 1900 の場合、n = n 日です。それ以外は、n = YYYYMMDD の日付です)。 /XJ :: 接合ポイントを除外します (通常、既定で含まれます)。 /FFT :: FAT ファイル時間 (2 秒の粒度) を仮定します。 /DST :: 1 時間の DST 時間差を補正します。 /XJD :: ディレクトリの接合ポイントを除外します。 /XJF :: ファイルの接合ポイントを除外します。 :: :: 再試行オプション: :: /R:n :: 失敗したコピーに対する再試行数: 既定値は 1,000,000。 /W:n :: 再試行と再試行の間の待機時間: 既定値は、30 秒です。 /REG :: /既定の設定としてレジストリに R:n と /W:n を保存します。 /TBD :: 共有名が定義されるのを待ちます (再試行エラー 67)。 :: :: ログ オプション: :: /L :: リストのみ - いずれのファイルにも、コピー、タイムスタン プの追加、または削除を実施しません。 /X :: 選択されたファイルのみではなく、余分なファイルをすべて報 告します。 /V :: スキップされたファイルを示す詳細出力を作成します。 /TS :: 出力にコピー元ファイルのタイム スタンプを含めます。 /FP :: 出力にファイルの完全なパス名を含めます。 /BYTES :: サイズをバイトで出力します。 /NS :: サイズなし - ファイル サイズをログに記録しません。 /NC :: クラスなし - ファイル クラスをログに記録しません。 /NFL :: ファイル リストなし - ファイル名をログに記録しません。 /NDL :: ディレクトリなし - ディレクトリ名をログに記録しません。 /NP :: 進行状況なし - コピーの完了率を表示しません。 /ETA :: コピーするファイルの推定完了時刻を表示します。 /LOG:ファイル :: ログ ファイルに状態を出力します (既存のログを上書きしま す)。 /LOG+:ファイル :: ログ ファイルに状態を出力します (既存のログ ファイルに 追加します)。 /UNILOG:ファイル :: ログ ファイルに UNICODE で状態を出力します (既存のログを 上書きします)。 /UNILOG+:ファイル :: ログ ファイルに UNICODE で状態を出力します (既存のログに 追加します)。 /TEE :: コンソール ウィンドウとログ ファイルに出力します。 /NJH :: ジョブ ヘッダーがありません。 /NJS :: ジョブ概要がありません。 /UNICODE :: 状態を UNICODE で出力します。 :: :: ジョブ オプション: :: /JOB:ジョブ名 :: 名前の付いたジョブ ファイルからパラメーターを取得します。 /SAVE:ジョブ名 :: 名前の付いたジョブ ファイルにパラメーターを保存します。 /QUIT :: コマンド ラインの処理後に終了します (パラメーターの表示の ため)。 /NOSD :: コピー元ディレクトリを指定しません。 /NODD :: コピー先ディレクトリを指定しません。 /IF :: 後続のファイルを含みます。 |