du и ls сообщают различный размер директории?

при попытке проверить, что операция копирования успешно завершена (или, по крайней мере, что она не пропускала никаких файлов), я запустил du -b внутри каталога источника и назначения, и он показал разницу около 100 КБ.

Итак, я пошел отслеживать разницу и нашел один (из многих) лист-каталог, где du сообщает о разнице в общем размере копии и оригинала.

странно то, что ls -l показывает эти каталоги как прекрасно одинаковые!

вот два вывода в двух разных каталогах:

root@...:/local/.../DCIM/100___12# du -b
5286222389      .
root@...:/local/.../DCIM/100___12# ls -l --block-size=1
total 5292851200
-rwxr--r-- 1 markus markus   2167504 Aug  5  2013 IMG_0004.JPG
-rwxr--r-- 1 markus markus   2236594 Aug  5  2013 IMG_0005.JPG
...

и

root@...:/local_old/.../DCIM/100___12# du -b
5286226485      .
root@...:/local_old/.../DCIM/100___12# ls -l --block-size=1
total 5292851200
-rwxr--r-- 1 markus markus   2167504 Aug  5  2013 IMG_0004.JPG
-rwxr--r-- 1 markus markus   2236594 Aug  5  2013 IMG_0005.JPG
...

обратите внимание, как размер, сообщает du -b меньше, чем сообщает ls -l и что он отличается для двух каталогов. The весь выход ls -l идентично для обоих каталогов.

нет симлинки или системные файлы в этот каталог. Это всего лишь несколько штук .jpg-файлы (прямая копия с камеры SD-карта) и большой палец.db-файл, который Windows создала для них (через samba)...

Я что-то упускаю о том, как эти команды должны работать?

(я запускаю Debian Wheezy и uname -a выходы Linux ... 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux)

23
задан Markus A.
21.02.2023 0:43 Количество просмотров материала 2946
Распечатать страницу

2 ответа

оба правы.

  • ls показывает точные байты файлов
  • du показывает использование диска, то есть отличается тем, что система хранит файлы с помощью блоков.

Вы можете найти размер блока файловой системы с помощью следующей команды:

blockdev --getbsz <partition>

например:

blockdev --getbsz /dev/sda1
3
отвечен jcbermu 2023-02-22 08:31

после добавления -a переключатель ls, Я:

root@...:/local/.../DCIM/100___12# du -b
5286222389      .
root@...:/local/.../DCIM/100___12# ls -al --block-size=1
total 5292867584
drwxr-xr-x 2 markus markus     12288 Aug  5  2013 .
drwxr-xr-x 4 markus markus      4096 Aug  5  2013 ..
-rwxr--r-- 1 markus markus   2167504 Aug  5  2013 IMG_0004.JPG
...

и

root@...:/local_old/.../DCIM/100___12# du -b
5286226485      .
root@...:/local_old/.../DCIM/100___12# ls -als --block-size=1
total 5292871680
drwxr-xr-x 2 markus markus     16384 Aug  5  2013 .
drwxr-xr-x 4 markus markus      4096 Aug  5  2013 ..
-rwxr--r-- 1 markus markus   2167504 Aug  5  2013 IMG_0004.JPG
...

обратите внимание на разницу в размере .-каталог, который именно на разнице сообщает du -b.

кроме того, кажется, что в общей сумме сообщает ls на самом деле в блоках, а не в байтах. Так что ответ вроде-какой @jcbermu предложил, но наоборот:

да, оба правильно, но ls сообщает в общей сумме размер в используемых fs-блоках (но отдельные размеры файлов в байтах) и du -b отчеты байт.

разницу между источником и местом назначения, что я вижу вызвана разница в размере .. Откуда это взялось, другая история. Вероятно, потому, что в какой-то момент один зарезервировал больше записей каталога, чем другой. Но, по крайней мере, теперь я больше не волнуюсь, что что-то упустили в копии процесс. Следующий шаг-выяснить, как сказать du игнорировать . и .. в его итогов, и это должно решить мою проблему.

0
отвечен Markus A. 2023-02-22 10:48

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх