Почему du -sl показывает разные размеры для источника и результата cp -rl?

1915
Laurent Giroud

Я использовал, cp -rlчтобы скопировать папку. При измерении размера источника и результата копия du -slвозвращает несколько отличающиеся размеры, хотя diffподтверждает, что их содержимое идентично:

$ cp -rl folderA/ folderB/ $ du -sl folderA folderB 98561224 folderA 98590512 folderB $ diff --brief -ra folderA/ folderB/ $ 

Обе папки находятся на одном жестком диске, ни одна из них не была изменена между копией и мерой. Я ничего не нашел в документации, duи cpэто могло бы объяснить разницу.

5

1 ответ на вопрос

2
Nicholi

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

Чтобы проиллюстрировать это, запустите следующие команды:

ls -alR folderA/ | grep -v '^d' | awk ' END ' ls -alR folderB/ | grep -v '^d' | awk ' END ' 

Эти размеры должны быть идентичны (файлы dir не включены). Вы можете распечатать списки с размерами каталога и сравнить результаты, чтобы определить, какие каталоги отличаются.

Действительно, результаты идентичны. Laurent Giroud 13 лет назад 0
Я тоже обнаружил, что это каталог файлов, которые отличаются. Но почему это? tekumara 12 лет назад 0
На linux каталоги фактически являются самими файлами, просто особого вида. Я не совсем уверен, почему есть разница, но она, вероятно, связана с метаданными, хранящимися в файловой системе. Ваши исходные каталоги могут иметь больший размер, потому что раньше в них было больше файлов, но они были удалены (?). Эти удаленные файлы добавили некоторые «отступы» к метаданным файла dir, которые больше не используются. Поэтому, когда каталог копируется, нет необходимости также копировать эти устаревшие данные, поэтому копии меньше. PS это всего лишь догадки. Если вы узнаете, пожалуйста, ответьте. Nicholi 12 лет назад 0

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