Я использую Thunar 1.6.3, и в настоящее время, когда я просматриваю несколько папок, это выглядит примерно так:
Folder 1 8,2 kB
Folder 2 4,1 kB
Folder 3 4,1 kB
Folder 4 0 kB
Я не уверен, откуда взялись эти цифры «размера», но я уверен, что они не отражают фактический размер всего содержимого папок, потому что, когда я щелкаю правой кнопкой мыши и выбираю «Свойства», общий размер папок (все они имеют размер всего в килобайтах) составляет более 100 ГБ.
Вопросы
- Почему Thunar, как и командная строка в 12.04 и 14.04, показывает размер папки как 4K? Что означает это число?
- Есть ли способ вместо этого отобразить составной размер, то есть рассчитанный рекурсивный размер папки и всего содержимого, в терминале, Thunar или любом другом файловом менеджере? (Примечание: я не ищу решение на основе скрипта оболочки).
решение1
Мне следует немного объяснить структуру файловой системы Linux, чтобы объяснить это. Большинство файловых систем Linux делают что-то похожее, но я предполагаю ext4, которая в настоящее время используется по умолчанию.
Структура файловой системы
- inode — это базовый блок, который файловая система воспринимает как логическую единицу.
- Индекс каталога содержит ссылки на другие индексы.
- Файловый индексный дескриптор содержит метаданные, фактические данные и ссылки на блоки продолжения на случай, если файл придется хранить несмежным образом.
Ссылки
- Ext4 поддерживает два типа ссылок: жесткие и мягкие.
- Жесткая ссылка — это ссылка на inode напрямую. Каждый файл имеет по крайней мере одну жесткую ссылку из каталога, к которому он принадлежит.
- Поскольку каталог — это просто inode с информацией о группе ссылок inode, он может ссылаться на себя или на родителя. Другими словами, папка может быть как дочерней, так и родительской по отношению к одной и той же папке.
Ладно, это может сбивать с толку. Позвольте мне объяснить. Предположим, у вас есть три папки, A, B, C, как показано ниже.
C is in B.
B is in A.
Теперь, самое интересное, C может указывать на тот же inode, что и A, создавая то, что иногда называют циклической ссылкой. Если вы попробуете рекурсию, вы столкнетесь с бесконечным циклом.
- Мягкие ссылки — это обычные файлы, которые записывают путь к каталогу в их целевом местоположении. Они просто помечены в файловой системе так, что вместо строки текста их следует интерпретировать как ссылку на какое-то другое место. Например, Nautilus создает мягкие ссылки, когда вы используете его опции «Создать ссылку»/«Ссылка здесь».
Ну и что?
Следовательно, попытка рекурсивного вычисления размеров имеет свои особенности. Плохая идея пытаться вычислять размеры рекурсивно по умолчанию. Однако диалоговые окна свойств всех приличных файловых менеджеров, которые я знаю, показывают рекурсивно вычисленные общие размеры, потому что это то, чего ожидает обычный пользователь.
У Windows нет проблем?
На самом деле, Windows использует другой формат файловой системы, называемый NTFS, который хранит список всех файлов и их размер. Поэтому он всегда может легко определить общий размер.
Тогда почему бы нам не использовать NTFS?
Он не поддерживает понятие прав доступа Unix ( rwx
для владельца, группы и вселенной отдельно), и эта единственная причина делает его непригодным для использования в качестве файловой системы Linux. Ext4 вносит многое в таблицу, так что это незначительное неудобство не имеет значения для многих.
Хорошо. Дай мне нужный размер.
Ты пробовал du
?
Как это du
работает?
du
означает использование диска. Фактически он считает блоки inode, заботясь о том, чтобы не пересчитать их дважды. Сложите размеры, и вы получите общий размер.
TL;DR
Используйте du -hs <foldername>
для поиска фактического размера папки на диске. Читайте man du
для получения дополнительной информации.
решение2
ВтунарВ верхнем меню выберите «Правка»> «Настроить пользовательские действия», добавьте новое пользовательское действие с помощью:
- Базовыйвкладка: любое имя [например, папка(и)-размер файлов], команда
du -h -c %N | grep total | zenity --text-info
илиdu -chs %N | zenity --text-info
для выбранной папки и/или размера файла, за которым следует общий размер. - Условия появлениявкладка: отметьте все флажки.
Я нашел это решение наhttp://crunchbang.org
решение3
Небольшой тривиальный момент в этой теме, специфичный для Thunar, заключается в том, что Thunar сообщает о разных размерах, чем du с опцией --apparent size или без нее. Я думаю, что предоставленный ответ для du является подсказкой, почему это может быть (возможно, Thunar на самом деле считает эти же вещи немного по-другому, что бы это ни было). Пример: Та же папка: (x — остаток, который я не записал) du без --apparent-size: 19.x ГБ du с --apparent-size:12.x ГБ Thunar 5.5x ГБ Значение Thunar в скобках: 5.9x ГБ Я бы, вероятно, в конечном итоге взял вывод du (учитывая его возраст), но тем не менее это интересно.