
この違いについての説明は何ですか?
$ ls -l /Applications/Safari.app/Contents/Info.plist
-rw-r--r-- 1 root wheel 15730 11 jui 15:02 /Applications/Safari.app/Contents/Info.plist
$ du -sh /Applications/Safari.app/Contents/Info.plist
0B /Applications/Safari.app/Contents/Info.plist
ファイルがホームフォルダにコピーされたら、ls
同じdu
番号を報告します。
$ cp /Applications/Safari.app/Contents/Info.plist .
$ du -sh Info.plist; ls -l Info.plist
16K Info.plist
-rw-r--r-- 1 ant staff 15730 17 oct 16:53 Info.plist
両方のディレクトリはこのパーティション( / )にあります
diskutil info /
Device Identifier: disk0s2
Device Node: /dev/disk0s2
Part of Whole: disk0
Device / Media Name: ml2013
Volume Name: OSX.10.8
Escaped with Unicode: OSX.10.8
Mounted: Yes
Mount Point: /
Escaped with Unicode: /
File System Personality: Journaled HFS+
Type (Bundle): hfs
Name (User Visible): Mac OS Extended (Journaled)
Journal: Journal size 40960 KB at offset 0xc83000
Owners: Enabled
stat の出力は次のとおりです。
$ stat Info.plist
16777218 8780020 -rw-r--r-- 1 root wheel 0 15730 "Oct 17 17:47:12 2013" \
"Jun 11 15:02:17 2013" "Jun 11 15:02:17 2013" "Apr 27 11:49:34 2013"\
4096 0 0x20 Info.plist
答え1
何か見つけたかもしれない:
OS X の ls コマンドには次のスイッチがあります。
-O Include the file flags in a long (-l) output.
結果は次のとおりです。
$ ls -O Info.plist
-rw-r--r-- 1 root wheel compressed 15730 11 jui 15:02 Info.plist
HFS+ 圧縮ファイルに対してdu
常にレポートが行われることを (実験的に) 確認しました。0
圧縮されたファイルをコピーすると、圧縮が解除されます。そのため、論理的には、du
コピーされた圧縮されていないファイル上の正しいファイルが報告されます。
説明はこちらの行動についてdu
:
HFS+ ファイル圧縮
Mac OS X 10.6 では、Apple は HFS+ にファイル圧縮を導入しました。圧縮は、Mac OS X の一部としてインストールされたファイルに最もよく使用され、ユーザー ファイルは通常は圧縮されません (もちろん圧縮することもできます)。圧縮されたファイルの読み取りと書き込みは、Apple のファイル システム API に関しては透過的です。
圧縮ファイルには空のデータ フォークがあります。つまり、HFS+ ファイル圧縮を認識しないフォレンジック ツール (4.0.0 より前の TSK を含む) では、圧縮ファイルに関連付けられたデータは表示されません。
Mac OS X and iOS Internals: To the Apple's Core
この主題については、Jonathan Levin の第 16 章「To B(-Tree) or not to be - The HFS+ file systems」に も説明されています。
またafscツールフォルダー内のどのファイルが圧縮されているかを確認するのに役立ちます。
$ afsctool -v /Applications/Safari.app/
/Applications/Safari.app/.:
Number of HFS+ compressed files: 1538
Total number of files: 2247
Total number of folders: 144
Total number of items (number of files + number of folders): 2391
Folder size (uncompressed; reported size by Mac OS 10.6+ Finder): 29950329 bytes / 34.7 MB (megabytes) / 33.1 MiB (mebibytes)
Folder size (compressed - decmpfs xattr; reported size by Mac OS 10.0-10.5 Finder): 21287197 bytes / 23.8 MB (megabytes) / 22.7 MiB (mebibytes)
Folder size (compressed): 22694835 bytes / 25.2 MB (megabytes) / 24 MiB (mebibytes)
Compression savings: 24.2%
Approximate total folder size (files + file overhead + folder overhead): 26353338 bytes / 26.4 MB (megabytes) / 25.1 MiB (mebibytes)
答え2
du
を使用し、ファイル システムに対して 2 つの異なる実行の結果を比較する場合は、必ずスイッチを使用する必要があります--apparent-size
。
例
これは CIFS マウントされた共有です。
$ du -sh somedir
50M somedir
$ du -sh --apparent-size somedir
45M somedir
du のマニュアルページからの抜粋
--apparent-size
print apparent sizes, rather than disk usage; although the apparent
size is usually smaller, it may be larger due to holes in (‘sparse’)
files, internal fragmentation, indirect blocks, and the like
元気?
これは多くの人を混乱させますが、ファイルがディスクに保存されるとき、たとえブロックの一部しか使用していなくても、ブロックの領域が消費されることを覚えておいてください。du
なしで実行すると--apparent-size
、ファイルによって消費される実際の領域ではなく、使用されているディスクのブロック領域の量に基づいてサイズが取得されます。
0Bサイズはどうですか?
0B /アプリケーション/Safari.app/コンテンツ/Info.plist
これはおそらくリンクです。このコマンドを実行すると、リンクであるかどうかがわかります。
$ ls -l /Applications/Safari.app/Contents | grep Info.plist
答え3
私の回答は他の回答と同じですが、まだコメントできないので、新しく始めます。
/Applications 内のほとんどのファイルは圧縮されており、コピーすると失われます。HFS+ で圧縮が使用される場合、ファイルデータはリソースフォークに保存されます。または十分に小さい場合 (4k 未満)、拡張属性になります。リソース フォーク内にある場合、du (少なくとも Yosemite では) は実際のディスク使用量をブロック単位で表示します。属性内に完全に含まれている場合は 0 が表示されます。