Ви можете відрізнити файл із твердими посиланнями на нього від нескладного файлу із "кількістю посилань". Я бачу два способи отримати це з командного рядка:
% stat original
File: ‘original’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 804h/2052d Inode: 932815 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 500/ bediger) Gid: ( 1000/ bediger)
Access: 2012-07-13 22:13:52.317101530 -0600
Modify: 2012-07-13 22:13:52.317101530 -0600
Change: 2012-07-13 22:14:08.050894536 -0600
Birth: -
Або
1010 % ls -li
total 0
932815 -rw-r--r-- 2 bediger bediger 0 Jul 13 22:13 original
932815 -rw-r--r-- 2 bediger bediger 0 Jul 13 22:13 secondary
Це самотнє "2" перед "bediger" - це кількість посилань. Зверніть увагу, що обидві назви файлів мають однаковий номер введення, 932815.
Я впевнений, що обидві ці команди отримують кількість посилань із поля st_nlink у структурі stat stat, яке заповнюється stat()
системним викликом.
Наскільки я можу сказати, працює tar
з --hard-dereference
означає , що замість того , щоб отримати один файл з двома різними іменами файлів (як в прикладі вище), ви отримаєте два файли, кожен з одним ім'ям. tar
ймовірно, перевіряє кількість посилань для кожного файлу, і за замовчуванням під час вилучення створюється тверда посилання на друге ім’я файлу для даних жорсткого зв’язку. При --hard-dereference
виклику при створенні архіву, як видається, створюється абсолютно новий файл для другого імені файлу, коли tar
запускається вилучення вилучення .