За замовчуванням 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
імовірно відстежує, які файли він бачив за номером inode, щоб уникнути їх підрахунку двічі. -l
відключає таку поведінку.
Так, щойно -L
, воно перейде за символічним посиланням, але якщо цільовий файл має номер inode, він вже бачив, він не буде рахуватися повторно. Щойно -l
він буде рахувати дублікати жорстких посилань, але не переходитиме до символічних посилань.
Якщо ви користуєтесь разом -l
і -L
разом, вони будуть дотримуватися символічних посилань, а також дозволять рахувати цільові файли більше разів.
du
хочеться грати розумно, але якщо запуститиdf -a -L bar foo
результат, то це дуже неправильно (підрахунок 16K у барі залишає foo порожнім).