ファイルのアーカイブ属性を付けたり外したりしてみた。

コンピュータ
Windowsのエクスプローラでファイルのプロパティを開くとファイルの属性のチェックボックスがあります。
「読み取り専用(R)」の属性を付ければファイルが書き込み禁止になります。「隠しファイル(H)」の属性を付ければエクスプローラでファイルが表示されなくなります。この2つの属性は用語から振る舞いが想像しやすいです。

しかし、「詳細設定(D)」→「ファイルをアーカイブ可能にする(A)」は用語から振る舞いが想像できませんでした。
調べたところファイルの差分バックアップに使われる属性で、まだバックアップされていないファイルはアーカイブ属性がONで、すでにバックアップされたファイルのアーカイブ属性がOFFになるようです。

どうやらアーカイブ属性はバックアップソフトに対して、そのファイルがバックアップ済みかそうでないかを知らせるフラグのようです。

実際ファイルを作成、更新することでアーカイブ属性がどう変わるかテストしてみました。

# 
# ファイルのアーカイブ属性のテスト
# 

$path = "h:\script\arcive_test.txt" # テストファイル


# ファイルが存在する場合削除
if (Test-Path $path) {
Remove-Item $path
}

# テスト用空ファイルの作成
New-Item -ItemType file $path

# アーカイブ属性の確認
(Get-Item $path).Attributes # => 結果 Archive(属性ON)

# アーカイブ属性を外す
Set-ItemProperty -Path $path -Name Attributes -Value ($file.Attributes -bxor [System.IO.FileAttributes]::Archive)

# アーカイブ属性の確認
(Get-Item $path).Attributes # => 結果 Normal(属性無し:Archive属性OFF)


# ファイルの内容を変更
"テストデータ" | Add-Content -LiteralPath $path -Encoding utf8

# アーカイブ属性の確認
(Get-Item $path).Attributes # => 結果 Archive(属性ON)

テストした結果から以下のシナリオを想像しました。

新規作成されたファイルは「未バックアップ」ですので「OSが」アーカイブ属性をONします。
ファイルをバックアップした場合、「バックアップソフトが」アーカイブ属性をOFFにします。
ファイルが更新された場合、バックアップ済みファイルと内容が変化していますので、再度バックアップ対象とする為「OSが」アーカイブ属性をONにします。

いたずらにエクスプローラから付けたり外したりする属性でないことを理解しました。
そのうちスクリプトで活用してみたいと思います。
スポンサーリンク

スポンサーリンク

コメント