Подтвердить что ты не робот

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.

4b9b3361

Ответ 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 также подсчитывает жесткие ссылки в каждом субдире, поэтому я могу видеть, насколько велика вся резервная копия, а не только дельта приращения.