Du подсчет жестких ссылок на файлы?
У меня есть резервная система, которая создает каталоги с именем Unix Timestamps, а затем создает инкрементные резервные копии с использованием системы жестких ссылок (-link-dest in rsync), поэтому обычно первая резервная копия очень большая, а затем более поздние резервные копии представляют собой фракции как большой.
Это мой вывод моих текущих резервных копий:
[email protected]:/media/awesomeness_drive# du -sh lantea_home/*
31G lantea_home/1384197192
17M lantea_home/1384205953
17M lantea_home/1384205979
17M lantea_home/1384206056
17M lantea_home/1384206195
17M lantea_home/1384207349
3.1G lantea_home/1384207678
14M lantea_home/1384208111
14M lantea_home/1384208128
16M lantea_home/1384232401
15G lantea_home/1384275601
43M lantea_home/1384318801
Все кажется правильным, однако, возьмите, например, последний каталог, lantea_home/1384318801
:
[email protected]:/media/awesomeness_drive# du -sh lantea_home/1384318801/
28G lantea_home/1384318801/
Я последовательно получаю это поведение, почему каталог считается 28G второй командой du?
Примечание. Выходные данные остаются неизменными с флагами -P и -L.
Ответы
Ответ 1
Жесткие ссылки - это настоящие ссылки на один и тот же файл (представленный его inode). Нет никакой разницы между "оригинальным" файлом и жесткой ссылкой, указывающей на него. Оба файла имеют одинаковый статус, оба являются ссылками на этот файл. Удаление одного из них позволяет другому оставаться неповрежденным. Удаление только последней жесткой ссылки приведет к удалению файла и освобождению дискового пространства.
Итак, если вы спросите du
то, что он видит только в одном каталоге, все равно, что есть жесткие ссылки в другом месте, указывающие на одно и то же содержимое. Он просто подсчитывает все размеры файлов и суммирует их. Только жесткие ссылки в рассматриваемом каталоге не учитываются более одного раза. du
- это умный (не все программы обязательно должны быть).
Таким образом, каталог A может иметь размер du
28G, каталог B может иметь размер 29G, но вместе они все еще занимают только 30G, и если вы зададите du
размера A и B, вы получите этот номер.
![Disc usage by several directories when hardlinks are involved.]()
Ответ 2
И с помощью переключателя "-l" du также подсчитывает жесткие ссылки в каждом субдире, поэтому я могу видеть, насколько велика вся резервная копия, а не только дельта приращения.