du И найти -ls

du И найти -ls

У меня есть сервер Solaris 10, который смонтировал удаленную файловую систему через NFS. Я думаю, что удаленная система — это NetApp, но это не ясно.

При запуске df -h <mountpoint>я беру размер 12T, б/у 10T с емкостью 87%.

Когда я меняю точку монтирования и запускаю, ls -A |xargs du -sя получаю около 8 мегабайт. Я ожидал, что du рекурсивно спустится и сложит все размеры файлов, но, похоже, здесь этого не происходит.

В качестве защиты я побежал

find <mountpoint> -ls | awk '{total=total+$7}END{print total}'

ответ — 13006791645. При делении на 1024^3 (1073741824) получается около 12,1 терабайт.

Так что, похоже, find -lsи dfболее или менее согласны. Почему бы du так жестоко не справиться?

PS: команда ls -Aтакже захватывает скрытые каталоги снимков, но find ничего не находит (кроме «обнаружен цикл»).

решение1

du -sотчеты в 512-байтовых блоках. Ваше сравнение с df -hне может быть сделано, так как duне сообщает человекочитаемые данные.

Чтобы сравнить оба значения, используйте либо , du -sh <mountpoint>либо , /usr/xpg4/bin/df -Pчтобы также вывести dfотчет в единицах по 512 байт.

В соответствии с man du:

Файлы с несколькими ссылками будут подсчитаны и записаны только для одной записи. Запись каталога, выбранная в отчете, не указана. По умолчанию размеры файлов записываются в единицах по 512 байт, округленных до следующей единицы по 512 байт.

Попробуйте /usr/xpg4/bin/df -Pполучить 512-байтовый отчет df:

bash-3.2$ /usr/xpg4/bin/df -P /var
Filesystem            512-blocks        Used   Available Capacity  Mounted on
rpool/ROOT/s10/var
                      1147797504    66061270   954397119     7%    /var

И сравните с du -s:

bash-3.2$ du -s /var
65976060        /var

Или сравните:

bash-3.2$ df -h /var              
Filesystem             size   used  avail capacity  Mounted on
rpool/ROOT/s10x_u11wos_24a/var
                       547G    32G   455G     7%    /var

с:

bash-3.2$ du -hs /var   
  31G   /var

Связанный контент