Anda dapat membedakan file dengan tautan keras dari file yang tidak terkait dengan "jumlah tautan". Saya melihat dua cara untuk mendapatkan ini dari baris perintah:
% 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: -
Atau
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' kesepian sebelum "bediger" adalah jumlah tautan. Perhatikan bahwa kedua nama file memiliki nomor inode yang sama, 932815.
Saya yakin bahwa kedua perintah ini mendapatkan jumlah tautan dari bidang st_nlink stat struct, yang akan diisi oleh stat()
panggilan sistem.
Sejauh yang saya tahu, menjalankan tar
dengan --hard-dereference
berarti bahwa alih-alih mendapatkan satu file dengan dua nama file yang berbeda (seperti dalam contoh di atas), Anda mendapatkan dua file, masing-masing dengan nama file tunggal. tar
mungkin memeriksa jumlah tautan pada setiap file, dan secara default saat mengekstraksi, itu menciptakan tautan keras pada nama file kedua yang dimilikinya untuk data file yang ditautkan dengan keras. Ketika dipanggil dengan --hard-dereference
pada pembuatan arsip, tampaknya membuat file yang sama sekali baru untuk nama file kedua ketika permintaan ekstraksi tar
berjalan.