2012年11月04日
Tweet
まずはアーカイブ属性を理解する必要があります。
ファイルのプロパティを表示させ、詳細設定を見ると、以下の通り、「ファイルをアーカイブ可能にする」というチェック項目があります。
バックアップソフトなどでフルバックアップを取得すると、このアーカイブビットがクリア=チェックがはずされます。
ファイルが更新されたり、新規で作られると、このアーカイブ属性がチェックされます。
以上のことから、robocopy でも最低でも月1回はアーカイブビットを無視してすべてのファイルをコピーし、そのときはアーカイブビットをクリアします。
日々のバックアップは、アーカイブビットにチェックのあるもののみを対象にします。増分か差分バックアップかにもよりますが、今回は増分としますので、毎回コピーしたファイルはかならずアーカイブビットはクリアします。
計画としては、
・毎月1日にアーカイブビットを無視してすべてのファイルをバックアップ。このときアーカイブ属性はクリア
・1日以外の毎日はアーカイブ属性のあるファイルをバックアップ。このとき、アーカイブ属性はクリア。バックアップ先は、日付のフォルダ名とする
※ただしこの場合だと、削除されたファイルは反映されません。例えば31日にディスクの故障が発生した場合、フルバックアップ翌日からディスク故障までに削除したファイルはすべて復元されてしまいます。ただ、削除されてしまうよりはいいだろうってことにします。
※どうもアーカイブ属性を無視してコピーし、コピー元のアーカイブ属性をリセットするというオプションが無いようでした。そのため、常に以下のコマンド(アーカイブ属性にチェックの入っているファイルをコピーし、コピー元のアーカイブ属性はクリアする)を実行します。
# robocopy [コピー元] [コピー先\日付] /E /M
そして1日はすべてのファイルにアーカイブ属性を付与するコマンドを実行するようにしたいと思います。
# ATTRIB +A [コピー元]\* /S /D
※さらに上記の ATTRIB コマンドでは隠し属性のファイルは変更できません。そのため1日だけは隠し属性のみrobocopy を走らせます。おそらく隠し属性のファイルは増分バックアップされませんが、とりあえずそれでOKとします
robocopy [コピー元] [コピー先]\%DATE:/=-% /E /M /IA:H
batファイル
IF %date:~8,2% EQU 01 (
ATTRIB +A [コピー元]\* /S /D
robocopy [コピー元] [コピー先]\%DATE:/=-% /E /IA:H
)
robocopy [コピー元] [コピー先]\%DATE:/=-% /E /M
※なんかやっつけでやったので、うまく動かなかったら修正します。

ファイルのプロパティを表示させ、詳細設定を見ると、以下の通り、「ファイルをアーカイブ可能にする」というチェック項目があります。
バックアップソフトなどでフルバックアップを取得すると、このアーカイブビットがクリア=チェックがはずされます。
ファイルが更新されたり、新規で作られると、このアーカイブ属性がチェックされます。
以上のことから、robocopy でも最低でも月1回はアーカイブビットを無視してすべてのファイルをコピーし、そのときはアーカイブビットをクリアします。
日々のバックアップは、アーカイブビットにチェックのあるもののみを対象にします。増分か差分バックアップかにもよりますが、今回は増分としますので、毎回コピーしたファイルはかならずアーカイブビットはクリアします。
計画としては、
・毎月1日にアーカイブビットを無視してすべてのファイルをバックアップ。このときアーカイブ属性はクリア
・1日以外の毎日はアーカイブ属性のあるファイルをバックアップ。このとき、アーカイブ属性はクリア。バックアップ先は、日付のフォルダ名とする
※ただしこの場合だと、削除されたファイルは反映されません。例えば31日にディスクの故障が発生した場合、フルバックアップ翌日からディスク故障までに削除したファイルはすべて復元されてしまいます。ただ、削除されてしまうよりはいいだろうってことにします。
※どうもアーカイブ属性を無視してコピーし、コピー元のアーカイブ属性をリセットするというオプションが無いようでした。そのため、常に以下のコマンド(アーカイブ属性にチェックの入っているファイルをコピーし、コピー元のアーカイブ属性はクリアする)を実行します。
# robocopy [コピー元] [コピー先\日付] /E /M
そして1日はすべてのファイルにアーカイブ属性を付与するコマンドを実行するようにしたいと思います。
# ATTRIB +A [コピー元]\* /S /D
※さらに上記の ATTRIB コマンドでは隠し属性のファイルは変更できません。そのため1日だけは隠し属性のみrobocopy を走らせます。おそらく隠し属性のファイルは増分バックアップされませんが、とりあえずそれでOKとします
robocopy [コピー元] [コピー先]\%DATE:/=-% /E /M /IA:H
batファイル
IF %date:~8,2% EQU 01 (
ATTRIB +A [コピー元]\* /S /D
robocopy [コピー元] [コピー先]\%DATE:/=-% /E /IA:H
)
robocopy [コピー元] [コピー先]\%DATE:/=-% /E /M
※なんかやっつけでやったので、うまく動かなかったら修正します。