Sabit linkli bir dosyayı, sabit linkli olmayan bir dosyadan "link sayımı" ile ayırt edebilirsiniz. Bunu komut satırından almanın iki yolunu görüyorum:
% 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: -
Veya
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
Bu "bediger" öncesi yalnız '2' olan link sayısı. Her iki dosya adının da 932815 numaralı inode numarasına sahip olduğuna dikkat edin.
Bu komutların her ikisinin de bağlantı sayısını, stat()
sistem çağrısı tarafından doldurulan struct stat'ın st_nlink alanından aldığından eminim .
Söyleyebileceğim kadarıyla, iki farklı dosya adına sahip tek bir dosya almak yerine (yukarıdaki örnekte olduğu gibi) her biri tek bir dosya adına sahip iki dosya elde tar
etmek --hard-dereference
anlamına geliyor. tar
muhtemelen her dosyadaki bağlantı sayısını kontrol eder ve çıkartırken varsayılan olarak, sabit dosya verisi için sahip olduğu ikinci dosya adında bir zor bağlantı oluşturur. --hard-dereference
Arşiv oluşturmada çağrıldığında , çıkartma çağrısı tar
çalıştırıldığında ikinci dosya adı için tamamen yeni bir dosya oluşturuyor gibi görünüyor .