суббота, 25 июня 2016 г.

Cоздание в Thunar дополнительного меню, отображающего сведения о размере файлов и/или папок

При поисках дополнительных возможностей файлового менеджера Thunar в оболочке XFCE была найдена команда, относящаяся к "особым действиям". Речь идёт об отображении размера выбранных данных.

Перейдите в меню "Правка", выберите "Особые действия" и нажмите на плюсик.



Добавьте новое действие. В поле "Команда" укажите   du -chs %N | zenity --text-info

Если желаете, чтобы окно отображения имело заголовок, то дополните команду, указав --title="Ваш текст", например,

du -chs %N | zenity --text-info --title="Размер выбранных данных"

Название пункта меню, комментарий и значок укажите по своему вкусу.


Укажите применимость ко всем файлам и папкам.


Перезапустите Thunar:  thunar -q

У Вас появится примерно такой пункт меню:


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


Выбраны объекты


Размер в "Свойства"


Размер в созданном пункте меню

Как выяснилось, расхождения зачастую практически кратны 1,024 (с определённой погрешностью). Например, если 580 три раза подряд умножить на 1,024, то в итоге получается  622,77  А если 622,4 три раза подряд поделить на 1,024, то в итоге получается 579,65

При этом пустые папки в "Свойства" имеют размер 0 байт, а в созданном пункте меню – 4 Кб. Опять же налицо кратность 1,024, так как фактически 4 Кб соответствует 4,096 Кб.

В поисках ответа на данный вопрос было выдвинуто предположение, что в этих случаях используется разные команды, а соответственно – и разные алгоритмы подсчёта:  du и df

Как поясняется в соответствующей статье блога "Одминского блога" (Блог о технологиях, технократии и методиках борьбы с граблями):

"При одновременном использовании этих команд, в большинстве случаев мы получим разные результаты вывода для каждой из них. Это вызвано различными алгоритмами работы данных утилит, которые следуют из их названий: утилита df считает общий суммарный объем блоков, помеченных в суперблоке файловых систем как свободные, в то время как утилита du исходит из информации об объеме занятом файлами, отправляясь от  описания в метаданных.
В связи с тем, что операции файловой системы абсолютно во всех случаях, так или иначе, кэшируются, то довольно часто может возникнуть ситуация, когда файл физически удален, т.е. имя файла удалено из записи каталога, а в карте занятости, освобождение соответствующего пространства еще не произошло, и тогда, как раз, блоки данных будут подсчитываться при использовании df, и будут не учтены в результатах du."

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

Из всего написанного выше мной был сделан вывод, что при практическом применении созданная команда меню "Размер выбранного" укажет объём данных, которые будут переданы, например, на файлообменник, а размер, отображаемых в "Свойства" покажет фактическое место, занимаемое данными на диске кокретной файловой системы. Например, файл в 1 Кб данных фактически займёт 4 Кб. Отчасти предположение подтверждается отправкой на файлообменник файла mp4, при вызове свойств которого было получено


При последовательном делении 72 713 949 байт на 1024 было получено значение


При последовательном делении 72,7 на 1,024 было получено 69,332122803

При вызове пункта меню было получено


В клиенте управления файлообменником отображается


Не исключаю, что могу и ошибаться, так как не являюсь гуру в сфере программирования или системотехники. Тогда уж пусть специалисты меня поправят.

Получается, что своё неумеренное любопытство привело к необходимости во что-то вникать или что-то читать. Прямо как


Комментариев нет:

Отправить комментарий