Задать вопрос
@sheldon_coop

Почему при полностью идентичном содержимом файлов (*.js, *.php, *.css) они могут иметь разный вес/размер?

Всем привет!

Я работаю с WordPress проектами, с учетом того, что сейчас очень сложно оплачивать подписки на зарубежное ПО из России, у пользователей и разработчиков появилась необходимость как-то обновлять платные плагины для WP, одним из таких является популярный ACF PRO (https://www.advancedcustomfields.com/pro/)

Чисто случайно я наткнулся на публичный репозиторий на GitHub с большим количеством звезд, где как раз регулярно выкладывают свежие версии этого самого плагина.
https://github.com/pronamic/advanced-custom-fields-pro

Для интереса, я решил сравнить файлы и узнать, есть ли там что-то "лишнее" (во все смыслах, вредоносный код, уязвимости и тд), или там реально чистые копии PRO версий плагина.

У меня осталась версия "6.2.6.1" годовалой давности этого плагина (которая была куплена по официальной подписке), и я сравнил файлы с той же версией из репозитория GitHub. Оказалось что большинство файлов (например *.js, *.php, *.css) имеют разный размер (смотрел из-под разных ОС - винда, Ubuntu), но АБСОЛЮТНО ИДЕНТИЧНОЕ содержимое (код) при сравнении и открытии в различных редакторах (например VS Code). Я даже попытался сравнить через Git, создал проект с моей папкой плагина, затем заменил все на плагин из GitHub. Сначала гит показал что изменено более 300 файлов, но при попытке закоммитить выдал ошибку - нет изменений.

Как такое может быть, и разобраться в этом? Как реально узнать почему файлы имеют разных вес/размер?

PS
Естественно, на момент сравнения файлы были скачаны из под одной и той же ОС, и файлы физически на одном и том же SSD и в одной и той же файловой системе
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Простой 12 комментариев
Пригласить эксперта
Ответы на вопрос 2
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Многие платформы поддерживают метаданные для файлов. В винде они называются потоками (file streams). Их не видно, если просто открыть файл, но всякие программы знают, как туда залезть и что-то там посмотреть. Например, все браузеры при скачивании файлов из интернета делают в этих потоках пометку, что файл-то скачан. И винда потом при попытке открыть такой экзешник обычно выдает предупреждение: "Ахтунг, файл из интернета, точно хотите открыть?"

В эти потоки можно много чего запихать. Сами по себе данные там никак не могут заразить компьютер, но какой-нибудь вредоносный загрузчик вполне может данные оттуда достать и запустить. Так что это может быть скрытая полезная нагрузка вирусни, и какой-то один из файлов содержит код распаковки.

На линуксе похожая штука точно есть, но я не помню, как оно называется.

Еще варант: не ошиблись ли вы с подсчетом размеров файлов? Может вы килобайты с кибибайтами перепутали?

А гит скорее всего заметил измененные даты на файлах, но изменений в самих файлах не нашел. И да, гит эти потоки игнорирует.
Ответ написан
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Как именно вы проверяли вес файлов и чем и как сравнивали их содержимое? Есть два варианта: возможно вы спутали размер файла и место занимаемое на диске, показываемые в свойствах файла - это разные вещи. На диске файл занимает больше место, т.к. под файл выделяется место кластерами, а размер кластера фиксирован для раздела и может быть разным, и соответственно в разных ОС и в разных ФС он может быть разным. Второй вариант - разные переводы строк в разных ОС. Гит умеет подменять и в разных ОС размер и хэш файлов будет отличаться из-за разных принятых переводов строк в ОС или настроек гита.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы