По умолчанию duкаждый файл будет учитываться только один раз, если он связан несколько раз. Если вы запустите du -L barего, он будет считать файл, потому что он достигает его только один раз. Однако, если вы запустите du -L *его, он будет считать только в первый раз. Например:
$ du -L foo bar
16K foo
4.0K bar
$ du -L bar foo
16K bar
4.0K foo
Обратите внимание, что при изменении порядка аргументов папка будет отображаться как 16K.
Вы можете принудительно duпосчитать файл дважды, передав -lпараметр.
Редактировать:
Символьные ссылки - это особый вид файла, и для перехода по ссылке необходим дополнительный шаг. duне будет переходить по символическим ссылкам, если -Lопция не включена.
С другой стороны, жесткая ссылка - это один файл, существующий в двух (или более) папках. duпредположительно отслеживает, какие файлы он видел по номеру инода, чтобы избежать их повторного подсчета. -lотключает это поведение
Так, с just -L, он будет следовать по символической ссылке, но если целевой файл имеет номер инода, он уже видел, что он не будет пересчитан. Просто -lон будет считать дубликаты жестких ссылок, но не будет переходить по символическим ссылкам.
Если вы используете -lи -Lвместе, он будет следовать по символическим ссылкам, а также позволит подсчитывать целевой файл (ы) более одного раза.
duхочет играть умно, но если вы запустите,df -a -L bar fooрезультат будет очень неправильным (считая 16K в баре, оставляя foo пустым).