У меня есть файл на машине linux, размер которого составляет 3404494030 после выполнения команды "ls -l". Когда я делаю "ls -lh", он показывает 3,2 ГБ, что правильно при преобразовании из байтов в гигабайты. Но когда я делаю "du -h" для того же файла, он показывает 4 ГБ. Я пытался во многих случаях, но я обнаружил, что есть несоответствие между выводом "ls" и "du". Я также попытался увидеть размер файла с помощью клиента filezilla (клиент ftp на windows), щелкнув правой кнопкой мыши по файлу и отслеживая его размер через свойства файла. Вывод "ls" и filezilla совпадает. Я использую CentOS, и мне интересно, если это ошибка "du" или есть проблема в моем понимании "du". Есть похожий вопрос, заданный ранее. Я проверил это и нашел, что это был тривиальный вопрос.
2 ответа
6
ls
показывает пространство, выделенное для файла.
du
показывает количество места, фактически используемого файлом.
2
Разреженные файлы:
$ dd if=/dev/zero of=sparse.img bs=1M seek=1024 count=0
$ ls -lh sparse.img
-rw-rw-r-- 1 ruiqi ruiqi 1.0G Nov 26 11:23 sparse.img
$ du sparse.img
0 sparse.img