Учитывая следующую конфигурацию:
mount -t cifs
Если du -h /shared/filename
команда выполняется на клиенте, потребуется ли клиенту получить весь файл с сервера, чтобы определить его размер? Что о du --apparent-size
? А как насчет простого ls -lR
операция?
Обе du
и ls
работают только с метаданными файлов, полученными с помощью варианта вызова stat () (на самом деле последние ls
использует lstat()
пока du
использует fstatat()
). Неважно, какие параметры вы передаете du
или ls
. Эти инструменты никогда не будут обрабатывать фактические данные файла.
Я не знаю ни одной файловой системы (могут быть исключения, когда дело доходит до реализации эзотерической файловой системы с плавким предохранителем), которая считывает фактический файл для получения этих метаданных.
Насколько я знаю, du использует вызов stat и извлекает метаданные файла, чтобы указать размер файла. На самом деле он не проверяет длину файла, если вы не используете -c
flag, то он фактически считает байты.
Следовательно, он не должен получать файл.
ls
делает тот же вызов статистики.
du --apparent-size
должен передавать весь файл, так как он проверяет наличие разреженных областей и т. д.