NTFSの属性の一覧

投稿日:

この記事はhydrogen Advent Calender 2024の18日目の記事です。

ファイル属性

NTFSのファイル属性について解説する。NTFSにおいてはファイルに対して属性を付与することで、ファイルシステム上でのファイルの扱いをある程度制御できる。

例えば、ディレクトリはDirectory属性が付与されたファイルであり、隠しファイルはHidden属性が付与されたファイルである。UNIX系では、ファイル名が.から始まるものを隠しファイルとして扱うが、NTFSではHidden属性が付与されたファイルを隠しファイルとして扱う。

基本的に属性の付与をするにはattribコマンドを用いる。

attrib +R hogefile.txt

圧縮属性と暗号化属性は例外でそれぞれcompactcipherコマンドを利用する。

compact /C fuga
cipher /E piyodata.xslx

Readonly属性

読み取り専用のファイルであることを示す属性。ファイルシステム上で書き込みを禁ずるものであるので、属性を消さない限り管理者であっても書き込みは不可能。この点はUNIX系の読み取り専用属性とあまり大差はない。

ディレクトリには効果がない。

Hidden属性

隠しファイルであることを示す属性。この属性が付与されたファイルは通常表示されない。エクスプローラー上では「隠しファイルの表示」にチェックを入れ、dirコマンドでは/aオプションを付加することで表示することができる。

UNIX系(ext4など)ではファイル名が.から始まる場合に限り、隠しファイルになっていたが、NTFSでは属性として存在するのでいかなるファイルであっても隠しファイルにすることができる。

なお、Windowsにおいては悪名高いThumbs.dbに付与されている属性としても有名である。

System属性

OSの動作に必要な重要なファイルであることを示す属性。動作としては特殊なReadonly属性と特別なHidden属性が合わさったようなものとなる。

この属性が付与されたファイルの大半はC:\Windows以下にある。

Directory属性

ファイルがディレクトリであることを示す属性。他の属性と違って簡単に付与・削除する手段がない。

逆に言うと、ディレクトリはこの属性が付与されただけのファイルであるので、ディレクトリと完全に同一の名称のファイルを作成することはできないし、ディレクトリを表す拡張子も存在しない。

Archive属性

ファイルが変更されたかどうかを示す属性。ファイルが変更されると、この属性が付与される。

ファイルシステムの扱いを制御するというよりは、バックアップソフト用に用意された属性である。

Temporary属性

一時的なファイルであることを示す属性。ディスクのキャッシュに十分な空き領域があれば、基本的にキャッシュだけで完結させるように動作する。

そのため、この属性を使うことでより高速で効率よく一時的な領域を使うことができる。但し、ファイルハンドルを閉じるとキャッシュから書き込みが発生する点に注意しなければならない。

基本的に使ったら削除するようなファイルに使う。

Sparse属性

ファイルシステム上に記録されているサイズは大きいが、有効なデータを殆ど含んでいないようなファイル(Sparse File)に付与される属性。必要な部分にのみ領域が割り当てられるため実際のファイルサイズは小さくなる。

Reparse Point属性

リンクのようなふるまいをするファイルに付与される属性。Windowsにおいては、シンボリックリンク、ハードリンク、ジャンクションと3種類のリンクがあるが、このうちハードリンク以外はこの属性を利用することで実装されている。

この属性が付加されたファイルへのパスがファイルシステムに渡されると、そのファイルにあるタグに応じてドライバーが処理を行うこととなっている。

OneDrive上のファイルがまるでローカルにあるかのように扱えるのもこの属性の機能を利用して実現している。

Compressed属性

NTFS圧縮されたファイルに付与される属性。NTFS圧縮とは、実際には圧縮されているファイルを圧縮されていないファイルのように扱うことができる機能である。ただし、標準的な圧縮ソフトよりも圧縮率が低くなり、頻繁にアクセスするようなファイルで用いると明らかに遅くなるというデメリットがある。

しっかりと活用すると目に見えてディスクの空き容量が増大するが、乱用するとSSDの寿命を縮めるのでうまく使いこなすことが肝要。

Offline属性

ファイルの内容がないよーファイルの内容が物理的にアクセスできない状態であることを表す属性。OneDrive上のファイルを表すために作成されるダミーファイルにも付加される。

No Index属性

ファイル検索用のインデックスに登録されないことを示す属性。ファイルシステム上の特別な扱いは特にない。

Encrypted属性

ファイルがNTFS暗号化(EFS)されていることを示す属性。EFSとはファイル自体を一度共通鍵暗号で暗号化した後、EFS証明書にある公開鍵で暗号化した共通鍵を別領域に保存することで実現されるファイルシステムレベルの暗号化である。利点としては、暗号化されたファイルにアクセスできる人は、普通のファイルと同様に扱えるという点である。

なお、NTFS以外のファイルシステムでフォーマットされた領域にコピーしようとすると外れてしまうので注意が必要。

Pinned属性

常時ローカルに存在させておく必要があるファイルであることを示す属性。OneDrive上のファイルでも実際の内容を常時ローカルに保持しておくことができる。

このようにすることで、オンラインである限り最新の情報が常にローカルに保持され、オフラインになっても読みだすことが可能である。

Unpinned属性

不要になったらローカルから内容が即座に削除されるファイルであることを示す属性。アクセスが発生するたびに実際の内容がOneDriveからダウンロードされ、アクセスが終了したら削除される。

頻繁にアクセスしないファイルに付与してローカルの空き容量を節約するための機能。

拡張属性

NTFSには拡張属性を書き込む領域があり、ちょっとしたデータをここに書き込むことができる。

なお、Windows上で簡単にここに書き込む方法はおそらくない。おとなしくWindows APIを使おう。