Назад | Перейти на главную страницу

du -sh * показывает значительно больше используемого пространства, чем ls -lah

У меня проблемы с нехваткой дискового пространства на одном из моих клиентских серверов.

Вывод команд ls -lah в /var/lib/mysql показывает:

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Но когда я проверяю размер файла в том же каталоге с помощью команды du -sh *, вывод показывает:

22G     database_xyz

Почему вывод этих команд показывает два совершенно разных результата?

У меня на диске осталось всего 2.2Гб.

root@jon-cust-lifeincity:/var/lib/mysql# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg-root    49G   44G  2.2G  96% /
tmpfs                1007M     0 1007M   0% /lib/init/rw
udev                 1002M  108K 1002M   1% /dev
tmpfs                1007M     0 1007M   0% /dev/shm
/dev/sda1             228M   16M  200M   8% /boot

РЕДАКТИРОВАТЬ:

Оказывается, что database_xyz на самом деле каталог, а не файл. Итак, замешательство было создано моим мозгом.

Похоже, вы неправильно понимаете то, что вам говорят. В ls -lah команда выводит список содержимого текущего каталога. В данном конкретном случае это /var/lib/mysql. Среди прочего вам сказали это

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Вы неправильно понимаете, что это вам говорит.

Вы можете рассматривать каталог как плоский файл, содержащий список записей каталога. (просто) Запись в каталоге - это имя файла и указатель на то, где этот файл находится на диске. Эта информация занимает место на диске.

какой

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

сообщает вам, что в /var/lib/mysql называется database.xyz. Эта запись предназначена для типа файла d что указывает на то, что это каталог, и среди прочего размер файла каталога составляет 16 КБ.

Чтобы узнать размер database_xyz файл только введите

du -sh database_xyz

вы найдете точный результат

ls не подходит для определения размера каталога. Это работает только для файлов, а не для каталогов.

Я вижу, что вы перечисляете детали каталога (первый d символ)

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Использовать du вместо. Это похожий пост при stackoverflow.