NTFSの属性の一覧
この記事はhydrogen Advent Calender 2024の18日目の記事です。
ファイル属性
NTFSのファイル属性について解説する。NTFSにおいてはファイルに対して属性を付与することで、ファイルシステム上でのファイルの扱いをある程度制御できる。
例えば、ディレクトリはDirectory属性が付与されたファイルであり、隠しファイルはHidden属性が付与されたファイルである。UNIX系では、ファイル名が.
から始まるものを隠しファイルとして扱うが、NTFSではHidden属性が付与されたファイルを隠しファイルとして扱う。
基本的に属性の付与をするにはattrib
コマンドを用いる。
attrib +R hogefile.txt
圧縮属性と暗号化属性は例外でそれぞれcompact
、cipher
コマンドを利用する。
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を使おう。