Не, там все нормально... Хардлинки просто пропадают из подсчета, но взорвать мозг себе можно - только в путь :) Вот, только что проверил.
Код:
[root@box test]# truncate -s 1G sparse1G
[root@box test]# cp sparse1G test1G
[root@box test]# du -kh *
0 sparse1G
0 test1G
[root@box test]# rsync sparse1G test1G
[root@box test]# du -kh *
0 sparse1G
1,0G test1G
[root@box test]# ln test1G hlink1G
[root@box test]# du -kh *
1,0G hlink1G
0 sparse1G
[root@box test]# ls -l
total 2097152
-rw-r--r-- 2 root root 1073741824 апр 16 10:35 hlink1G
-rw-r--r-- 1 root root 1073741824 апр 16 10:34 sparse1G
-rw-r--r-- 2 root root 1073741824 апр 16 10:35 test1G
сначала сделал sparse файл, не помню, как он по-русски. он занимает 0 байт. скопировал его, обе копии занимают по 0 байт. сделал rsync, который не трогал оригинал, но копию сделал заявленного размера в 1Гб. Сделал хардлинк, оригинал исчез из подсчета места, в списке файлов по прежнему все со своими запланированными размерами... Причем, ls суммарный размер файлов показывает именно таким, как если бы они были раздельными. Что по сути-то правильно.