
私も尋ねましたWindows に関する兄弟の質問。
Linux の場合 (テストしたところ):
- 空のフォルダのサイズは、名前に関係なく 4 KB と指定されます。
- 空のファイルのサイズは0バイトとして示されます
ただし、ファイルとフォルダーには当然名前があり、それをどこかに保存する必要があります。
- 大体どこに保管されているのでしょうか?
- これらのデータを保存するために使用できる最大メモリは、事前に定義された数値ですか、それともディスク内の使用可能なスペースに依存しますか?
- 短い名前の空のファイルは、長い名前の空のファイルよりも少ないスペースを占めますか? (または、これらの名前が格納されるデータ構造では、ファイルごとに固定のバイト数があり、残りのバイトがこれで埋められる可能性がありますか
\0
?) - 短い名前の空のフォルダーは、長い名前の空のフォルダーよりもスペースをあまり取りませんか?
- という空のフォルダーは、
foobar
という空のファイルよりも少ないスペース、同じスペース、それともより多くのスペースを占めますかfoobar
? - の空のファイルは、
/etc/empty.txt
の空のファイルよりも少ないスペース、同じスペース、それともより多くのスペースを占めますか/etc/long/nested/path/until/the/empty/file/is/reached/empty.txt
?
答え1
ファイル名はディレクトリに保存されます。ディレクトリはディレクトリ エントリで構成され、各ディレクトリ エントリにはファイル名とファイルの inode 番号が含まれます。inode には、ファイルを所有するユーザー ID とグループ ID、inode が最後に変更された時刻など、さまざまなメタデータが含まれます。ファイル名が長いファイルは、ディレクトリ内でより多くのスペースを占めます。同じ inode 番号を参照するディレクトリ エントリが複数存在する場合があります (同じディレクトリまたは異なるディレクトリ内)。同じ inode を指す追加のディレクトリ エントリが作成されると、ハード リンクの作成と呼ばれます。
inode テーブルには固定数の inode があるため、多数の inode を作成すると、最終的に inode テーブルのスペースが不足する可能性があります。(「df -i」を使用すると、使用されている inode の数を確認できます。ファイル システム内の inode の平均サイズがデフォルトよりも小さいと予想される場合は、多数の inode を持つファイル システムを作成することもできます。)
ディレクトリも inode で構成され、次の例外を除いてファイルとほとんど同じように機能します。まず、「空の」ディレクトリであっても、ディレクトリ エントリは '.' (ディレクトリ自体) と ".." (親ディレクトリ) を持つため、「空の」ディレクトリであっても 4k のスペースを占有します。次に、ディレクトリにはハード リンクがない場合があります。つまり ('.' と '..' エントリを無視すると)、ディレクトリ inode を参照するディレクトリ エントリしか存在できません。これは、ディレクトリがツリーを形成し、一般化されたグラフを形成しないことを意味します。
答え2
ls コマンドは、ファイル サイズなどを表示します。
ファイルがディレクトリの場合、表示されるサイズはシステムによって割り当てられたサイズです。(4K ブロックあたり: ext4 ファイル システムの場合は 4096 ビット) たとえ 0 バイトが含まれていてもです。
通常のファイルの場合、表示されるサイズはファイルが占めるサイズではなく、そのコンテンツのサイズです。
通常のファイルかディレクトリかを問わず、ファイルが占めるサイズを知るには、コマンド「du file_name」を使用します。