OP'nin sorusundan bahsediyor mount --bind
. Hızlı bir kontrol, bağlanan dizinin bağlantı sayısını değiştirmediğini gösterir. Sabit bağlantı her zaman kullanarak görebileceğiniz bağlantı sayısını değiştirir ls -ld
.
Normalde (çoğu Unix benzeri sistemde), bir dizine yapılan sabit bağlantıların sayısı, bu ada bağlı olan dizinlerin sayısı, ör.
".."
(üst dizin)
"."
(dizinin kendisi)
- alt dizinleri
(Genellikle) daha bilgilendirici bilgi sayfasını okuduysanız, başkalarının yaptığı gibi keşfedebilirsiniz :
Oh great, one spends hours tying to find what is wrong only to
discover,
$ info ln
On all existing implementations, you cannot make a hard link to a
directory, and hard links cannot cross filesystem boundaries. (These
restrictions are not mandated by POSIX, however.)
Therefore, kindly say everywhere you say super-user only,
instead say "few systems, super-user only".
şu anda ifade edilmiş olmasına rağmen
Çoğu sistem bir dizine sabit bağlantı yapılmasını yasaklar; izin verilen yerlerde, yalnızca süper kullanıcı bunu yapabilir (ve dikkatle, çünkü bir döngü oluşturmak diğer birçok yardımcı programda sorunlara neden olacaktır). Sabit bağlantılar dosya sistemi sınırlarını aşamaz. (Ancak bu kısıtlamalar POSIX tarafından zorunlu kılınmamıştır.)
Bir dizine sabit bağlantı oluşturmak (ve kaldırmak), bir dizinin bağlantısı kesildiğinde dosyaları kaybetmekten korunmak için kısıtlanmış bir özelliktir. C işletim sistemi arabirimindeki bağlantı / bağlantı kaldırma işlemleri simetrik olduğundan , dizinlere bağlantı normalde yalnızca mkdir / rmdir çağrılarında yapılır.
GNU çekirdeklerinin çoğunun 20-30 yıl önce, bazı gerçek müze parçalarının hala kullanımda olduğu yazıldığını (ve belgelendiğini) unutmayın. Belirtildiği gibi Sabit Linki ilgili , başlangıçta orada were hayır mkdir / rmdir çağrıları; sabit bağlantılar kullanılarak (ayrıcalıklı bir işlem olarak) dizinler oluşturuldu. Bahsedilen sorunları çözmek için sistem çağrıları eklendiğinde bunların hepsi ortadan kalktı. Ancak dokümantasyon, bu sistemlerin bakımını yapanların hafızasını geçmeye devam ediyor. Sorgulandı seçenek selefi oldu fileutils
(kombine edilmiş textutils
ve shellutils
oluşturmak üzere 1990'ların ortalarında coreutils
). Değişiklik günlüğünden birkaç öğe, özelliğin kökenini netleştirmeye yardımcı olabilir:
Mon Jul 23 16:57:44 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* cp.c (copy): Make +update operate silently, like +one-file-system.
* ln.c: Add -F as synonym for -d, for SunOS compatibility.
Wed Feb 21 11:13:26 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* ln.c (error): New function.
(main, do_link): Call error instead of fprintf and exit.
(main): Recognize new -d +directory option to allow superuser to
make hard links to dirs, like the BSD ln -f option.
(do_link): Don't allow hard links to dirs (they are hard to
get rid of -- rmdir and unlink don't do it), unless -d was given.
(usage): Mention -d +directory option.
Örneğin, bu özelliğin uygulanabilir olduğu antikalardan birinin SunOS olduğunu görebilirsiniz. İlgili kılavuz sayfası şunları söyledi:
OPTIONS
-f Force a hard link to a directory -- this option is only avail-
able to the super-user.
-s Create a symbolic link or links.
SYSTEM V OPTIONS
-f Force files to be linked without displaying permissions, asking
questions or reporting errors.
-F Force a hard link to a directory -- this option is only avail-
able to the super-user.
-s Create a symbolic link or links.
Belgelerde belirtildiği gibi, bu özellik (ve karşılık gelen seçenek POSIX'te değildir (ve nedenini açıklayan Gerekçe bölümüne bakın). Aksine, özellik yeni bir komuta (GNU coreutils tarafından da sağlanır) çağrıldı link
. komutun kendisi belirsizdir , standarttan herhangi bir şekilde faydalanmak için işlev çağrısının açıklamasını okumalısınız , ancak standart, gerekli ayrıcalıklar hakkında feragatnamenin yerine getirilmesinin yanı sıra, komutun çalışacağı koşulları açıklığa kavuşturmaz. Bunun için, standart dışındaki sisteme bağlı özelliklere gitmeniz gerekir:
Bir dizine bağlanma, geçmiş uygulamaların çoğunda süper kullanıcı ile sınırlıdır, çünkü bu özellik dosya hiyerarşisinde döngüler oluşturabilir veya dosya sistemini başka şekilde bozabilir. POSIX.1-2008'in bu cildi bu felsefeyi engelleyerek link()
ve unlink()
yaparak devam ettiriyor . Uygulayıcı böyle bir uzantı tasarladığında diğer işlevler bunu yapabilir.
Orada olan , normal numarası (2 artı alt dizinleri) ötesinde dizinlere sabit bağları kullanmak sistemleri.
OSX, sıradan dosyalar için dizinlere birden çok sabit bağlantı kullanır . Bunu kullanarak desteklemez ln
( kılavuz sayfasına bakınız ). Time Machine Magic'in Nasıl Çalıştığı'na göre , Time Machine yedekleme tesisi için kullanılan sürümleri sağlamak için bunu yapar.
Daha fazla okuma: