Размер файла Mac OSX «Get Info» против «wc -c»

0

Я создал разные несжатые растровые изображения с одинаковым размером пикселя (2000x2000) и разным содержимым (черный, красный, белый и фотография), ожидая, что размер файла в байтах будет одинаковым независимо от содержимого.

Это были результаты:

  • Команда wc -c сообщает об одном и том же размере для каждого изображения (12000056 байт).
  • Hex Editor сообщает одинаковые результаты в размере. Я также могу ясно видеть информацию о точечных рисунках для каждого канала RGB, как и ожидалось.
  • Mac OSX «Finder» и «Get Info» сообщают о небольших различиях. (12 106 957, 12 005 274, 12 005 261 ...)

Что может оправдать эти различия? Эта ОС добавляет метаданные? Что-то связано с файловой системой? Есть ли способ точно узнать, что происходит?

Джойс
источник
Здесь невозможно воспроизвести ошибку, и размер должен быть 1200005 4 байта, поскольку заголовок bmp равен 54 байта.
Chris.C
Да, размер именно в байтах ... Я планировал публиковать картинки, но не могу из-за своей репутации или отсутствия таковой на суперпользователе.
Джойс
На самом деле размер, который я получаю, составляет 12000056. После проверки HEX у него действительно есть 54 байта заголовка, но все файлы, кажется, имеют дополнительные 2 байта (00 00) в конце. Независимо от этого они все имеют одинаковый размер. Единственное несоответствие есть в «Get Info».
Джойс
Возможно, файлы имеют разветвления ресурсов или что-то похожее, что и в Finder, включая размер. Попробуйте использовать ls -l@файлы, чтобы увидеть их расширенные атрибуты и их размеры.
Гордон Дэвиссон
Да, это ресурс вилки. Я буду читать больше об этом. Спасибо. Не могли бы вы переписать этот комментарий как ответ, чтобы я мог принять его?
Джойс

Ответы:

0

Похоже, это было связано с тем, что файлы имеют разветвления ресурсов, а также разветвления данных. Вилки ресурсов - это старая (в основном устаревшая) функция файловой системы OS X, которая может хранить дополнительные данные о файле. Средство поиска будет рассматривать ветвь ресурса как часть размера файла, но большинство инструментов в стиле Unix даже не знают, что они существуют, и, следовательно, не будут отображать их как часть размера файла. Вот список старого документа, который у меня есть:

$ wc -c About\ iMac\ Firmware\ Update 
    2710 About iMac Firmware Update
$ ls -l@ About\ iMac\ Firmware\ Update
-rwx---r-x@ 1 gordon  staff  2710 Sep 14  2001 About iMac Firmware Update
    com.apple.FinderInfo      32
    com.apple.ResourceFork  17759

Информационное окно Finder показывает его размер в 20 269 байт (= 2 710 в ветке данных + 17 759 в ветке ресурсов).

Гордон Дэвиссон
источник