ファイル

ファイルシステム (file system)

ファイルシステムの種類

  • ディスクファイルシステム (Disk file systems)
  • フラッシュ (Flash file systems)
  • テープ (Tape file systems)
  • データベース (Database file systems)
  • トランザクション (Transactional file systems)
  • ネットワーク (Network file systems)
  • 共有ディスク (Shared disk file systems)
  • 特別 (Special file systems)
File system - Wikipedia

FAT (File Allocation Tables)

FATとは、MicrosoftのOSで利用されるファイルシステムです。

  • FAT16 … 2の16乗 (65536) のクラスタに分割して管理
  • FAT32 … 2の32乗 (約42億) のクラスタに分割して管理
FATとは 【 File Allocation Tables 】 〔 FATファイルシステム 〕 - IT用語辞典 e-Words

exFAT (Extended File Allocation Table)

exFATとは、FAT32を拡張したリムーバブル メディア向けのファイルシステムです。USBメモリなどでの利用が想定されているため、内蔵ハードディスクなどでは原則として使用できません。exFATとは 【 Extended File Allocation Table 】 - IT用語辞典 e-Words

ファイルシステム 最大容量 ファイルサイズの上限
FAT32 32GB 4GB
exFAT 16EB 16EB

NTFS (NT File System)

次のような特徴があります。

NTFSとは 【 NT File System 】 - IT用語辞典 e-Words

NTFS for Windows 98

2000より前のWindowsはNTFSをサポートしないため、NTFSでフォーマットされた領域にはアクセスできません。NTFS for Windows 98は、そのような問題を解決してくれるツールです。窓の杜 - 【集中企画】あなたのパソコン、まだFATなんですか? NTFSのススメ 齋藤正穂 (2002/12/05)

ReFS (Resilient File System)

ファイルシステムのトラブル

もし不意にドライブの中身が空になったとしたら、それはファイルシステムに問題が発生しているのかもしれません。

まずはチェックディスクを実行します。このとき[ファイル システム エラーを自動的に修復する]がチェックされていることを確認します。

終了しても何もファイルが表示されないならば、[フォルダーオプション]で[保護されたオペレーティング システム ファイルを表示しない (推奨)]のチェックを外して、システムファイルが表示されるようにします。

FOUND.000のような「FOUND.」に連番がつづくフォルダが表示されたら、それを開きます。

FILE0000.CHKのようなファイルが表示されたら、それがチェックディスクによって修復されたファイルです。

もし完全に修復されているならば、そのファイルに対応したアプリケーションでそのまま開けます。ファイル形式がわからないならば、Stirlingなどのバイナリエディタで開いて調査するか、フォーマットの判別ツールで確認できます。

ファイルが破損してしまっている場合には、さらにそれを修復しないと開けないこともあります。

フォルダ (folder)

フォルダとは、ファイル システムのディレクトリに、仮想的なディレクトリも含めた概念です。 shell - What is the difference between a directory and a folder? - Stack Overflow ASCII.jp:Windowsにおけるフォルダーとディレクトリとは (1/2) 塩田紳二 (2022/01/23)

ファイル名 (file name)

ファイル名の制限

個々の制限は、ファイルシステムに依存します。

長さ

Windows APIでは、ファイル パスを含めて260文字までに制限されています。Maximum Path Length Limitation - Naming Files, Paths, and Namespaces (Windows) | MSDN ファイル名の最大長はいくつですか。 - ファイル名とファイル名の拡張子: よく寄せられる質問 - Windows ヘルプ

Windows 10では、この制限を解除できます。

Windowsのパス名

禁止文字

Windowsでは「\ / ? : * " > < |」が禁止文字とされています。ファイル名に使用できない文字にはどんなものがありますか。 - ファイル名とファイル名の拡張子: よく寄せられる質問 - Windows ヘルプ

拡張子 (extension)

拡張子の偽装

Unicode制御文字をファイル名に埋め込むことで、拡張子を偽装することができます。たとえばファイル名を「sample_iva.exe」という名前にして、

このファイル名の「iva.exe」の直前に、Unicode制御文字のRLO (Start of right-to-left override) を埋め込みます。

そうするとこのファイルは外観上「sample_exe.avi」と表示され、拡張子が.aviであるかのように見えます。

埋め込まれた制御文字は、そのファイル名を編集状態にして[Unicode 制御文字の表示]を選択することで確認できます。

ちなみに登録されている拡張子は表示されないように設定している場合には、「sample_avi」と表示されます。

対策

RLOの悪用による拡張子の偽装に対処するには、ファイル名にRLOを含むファイルを実行できないように制限をかけます。それにはローカル セキュリティ ポリシーを起動し、[ソフトウェアの制限のポリシー]の[追加の規則]を選択します。このとき[追加の規則]の項目が表示されないならば、[ソフトウェアの制限のポリシー]を右クリックし、[新しいポリシーの作成]からポリシーを作成します。

[追加の規則]を選択したならば、それを右クリックして[新しいパスの規則]を選択します。そしてパスの項目に「**」と入力し、この2つのアスタリスクの中間を右クリックしてRLOを挿入します。さらに[セキュリティ レベル]が[許可しない]となっていることを確認したら[OK]で保存します。設定変更が完了したら、それを反映させるためOSを再起動させます。

最後にRLOを埋め込んだファイルを実行し、「グループ ポリシーによりこのプログラムはブロックされています。詳細はシステム管理者に問い合わせてください。」のようなメッセージが表示され、実行が阻止されるのを確認します。RLO偽装をちょっとしたTipsで対策 - ファイル名は「左から右に読む」とは限らない?! - @IT 飯田朝洋 (2009/09/28)

8.3形式 (8.3 filename / 8.3 form)

MS-DOSやWindows 3.1以前で使用されていたファイル名の命名規則で、ファイル名部分が半角で最大8文字、拡張子部分が最大3文字となっています。

この短いファイル名 (short filename) は、Win32のGetShortPathName()で取得できます。長いパスを8.3形式の短いパスに変換するには?[C#、VB] - @IT 一色政彦 (2007/10/11)

プロパティ

ファイル属性 (file attribute)

ファイル属性 意味 用途
R Read-only 読み取り専用 書き込みを禁止するように指示できる
A Archive アーカイブ システムがファイルを更新するとオンになる。バックアップ ツールは、バックアップ後にこれをオフにする
S System システム ファイル エクスプローラなどで、既定の状態では表示しないように指示できる
H Hidden 隠しファイル エクスプローラなどで、既定の状態では表示しないように指示できる
I (N) not content Indexed 非インデックス対象ファイル Windows Searchに対して、インデックスの対象から除外するように指示できる
C Compact 圧縮 圧縮されていることを示す
E Encrypted 暗号化 暗号化されていることを示す

ファイル属性は、attribコマンドでオンやオフにできます。C属性はcompactコマンドで圧縮するとオンになり、E属性はcipherコマンドで暗号化するとオンになります。

タイムスタンプ (time stamp)

項目 内容
作成日時 ファイルが作成された日時
更新日時 ファイルに書き込まれ、閉じられた日時
アクセス日時 ファイルが開かれ、閉じられた日時 ※1

※1 NtfsDisableLastAccessUpdateが1に設定されていると、更新されない NtfsDisableLastAccessUpdate | Microsoft Learn

Windowsでは、バージョンによって日時の表記が異なります。Windows 秘話: ファイル プロパティのタイムスタンプの進化 | Microsoft Learn Raymond Chen (2010/02)

ファイルシステムによって、タイムスタンプを記録するタイミングなどが異なります。

  FAT exFAT NTFS
時刻の種類 現地時刻   UTC (世界協定時刻)
作成日時 0.01秒 単位 0.01秒 単位  
更新日時 2秒 単位 0.01秒 単位  
アクセス日時 1日 単位 2秒 単位 既定では記録なし
ファイルの時刻 - Win32 apps | Microsoft Learn
    FAT exFAT NTFS
コピー 作成日時 コピーされた日時
更新日時 維持される
移動 作成日時 維持される
更新日時 維持される
異なるドライブへのコピー 作成日時 維持される 維持される コピーされた日時
更新日時 維持される コピーされた日時 維持される
異なるドライブへの移動 作成日時 維持される
更新日時 維持される

代替データ ストリーム (Alternate Data Streams : ADS)

ファイルにこの情報が付加されているかどうかは、dirコマンドに/rオプションを指定することで確認できます。

C:\>dir /r
2000/01/01  00:00                 0 test
                                  8 test:stream:$DATA
2000/01/01  00:00             1,100 sample.txt
                                 85 sample.txt:Zone.Identifier:$DATA

またその内容は、ファイル名:ストリーム名をコマンドへ渡すことで確認できます。

D:\>more < test:stream
hello

D:\>more < sample.txt:Zone.Identifier
[ZoneTransfer]
ZoneId=3

この情報を一括して処理できるツールとして、Streams | TechNetが提供されています。

Zone.Identifier (ZoneId)

この情報が付加されたファイルには、エクスプローラのプロパティで「このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」と表示され、実行が制限されます。

エクスプローラでこのZoneIdを削除するには、そのファイルのプロパティで[ブロックの解除]を実行します。そのとき解除に失敗するならば、アクセスが許可されたフォルダへコピーした上で再度実行します。

プロパティの取得

コマンドによる方法

wmicコマンドにより取得できます。windows xp - Is there a way to get file metadata from the command line? - Super User

C:\>wmic datafile where name="C:\\Windows\\System32\\cmd.exe" get

取得可能なプロパティは、次のように確認できます。

C:\>wmic datafile get /?

プログラムによる方法

ツールによる方法

ファイルリスト作成機

ファイルリスト作成機のダウンロード : Vector ソフトを探す!

アクセス権 (access rights)

パーミッション (permissions) / アクセス許可

パーミッションとは、ファイルやフォルダに対するアクセス権の許可情報のことです。

グループ名とユーザー名

Windowsはアクセス権の管理のため、SIDでユーザーを識別しています。

アクセス制御リスト (Access Control List : ACL)

アクセス制御リストとは、アクセス制御エントリ (Access Control Entries : ACE) のリストです。Access Control Lists (Windows) | MSDN

コマンドラインからは、caclsで制御できます。

ジャーナリング (journaling)

ジャーナリング ファイルシステムとは、ファイル処理をログに記録することで、障害発生時の原因の確認を容易にするものです。

複数の技術系サイトから、まとめて検索