Pertanyaan OP menyebutkan mount --bind
. Pemeriksaan cepat menunjukkan bahwa itu tidak mengubah penghitungan tautan untuk direktori yang dipasang. Hardlinking selalu memodifikasi penghitungan tautan, yang dapat Anda lihat menggunakan ls -ld
.
Biasanya (kebanyakan sistem mirip Unix), jumlah hardlink ke direktori akan menjadi jumlah direktori yang terhubung dengan nama itu, misalnya,
".."
(direktori induk)
"."
(direktori itu sendiri)
- subdirektori
Jika Anda membaca (biasanya) lebih informatif Info halaman, Anda mungkin menemukan sebagai orang lain telah dilakukan:
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".
meskipun saat ini worded
Sebagian besar sistem melarang membuat tautan keras ke direktori; pada yang diizinkan, hanya pengguna super yang dapat melakukannya (dan dengan hati-hati, karena membuat siklus akan menyebabkan masalah bagi banyak utilitas lain). Tautan keras tidak dapat melewati batas sistem file. (Namun, pembatasan ini tidak diamanatkan oleh POSIX.)
Membuat (dan menghapus) hardlink ke direktori adalah fitur terbatas untuk menjaga dari kehilangan file jika direktori tidak terhubung. Karena operasi tautan / pembatalan tautan pada antarmuka sistem operasi C simetris , penautan ke direktori biasanya dilakukan hanya dalam panggilan mkdir / rmdir.
Ingatlah bahwa banyak GNU coreutils ditulis (dan didokumentasikan) 20-30 tahun yang lalu, ketika beberapa karya museum nyata masih digunakan. Seperti tercantum dalam Mengenai Keras link , awalnya ada tidak ada panggilan mkdir / rmdir; direktori dibuat (sebagai operasi istimewa) menggunakan tautan keras. Semua itu hilang ketika panggilan sistem ditambahkan untuk menyelesaikan masalah yang disebutkan. Tetapi dokumentasi terus mengacu pada sistem ini melewati memori pengelola mereka. Pilihan yang dipertanyakan ada di pendahulunya fileutils
(yang dikombinasikan dengan textutils
dan shellutils
pada pertengahan 1990-an untuk membentuk coreutils
). Beberapa item dari changelog dapat membantu untuk menjelaskan asal-usul fitur:
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.
Jadi Anda dapat melihat misalnya bahwa salah satu barang antik yang menerapkan fitur ini adalah SunOS. Halaman manual yang sesuai mengatakan ini:
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.
Sebagaimana dicatat dalam dokumentasi, fitur ini (dan opsi yang sesuai tidak ada dalam POSIX (dan lihat bagian Dasar Pemikiran yang menjelaskan alasannya). Sebaliknya, fitur tersebut dipindahkan ke perintah baru (disediakan juga oleh GNU coreutils) yang disebut link
. Deskripsi perintah itu sendiri tidak jelas, Anda harus membaca deskripsi pemanggilan fungsi untuk mendapatkan penggunaan dari standar. Namun, standar tidak mengklarifikasi kondisi di mana perintah akan bekerja, selain meneruskan penyangkalan tentang hak istimewa yang diperlukan. Untuk itu, Anda harus pergi ke fitur yang tergantung pada sistem di luar standar:
Menautkan ke direktori dibatasi untuk superuser di sebagian besar implementasi historis karena kemampuan ini dapat menghasilkan loop dalam hierarki file atau merusak sistem file. Volume POSIX.1-2008 ini melanjutkan filosofi itu dengan melarang link()
dan unlink()
melakukan hal ini. Fungsi lain bisa melakukannya jika implementor mendesain ekstensi semacam itu.
Ada yang sistem yang menggunakan hardlinks ke direktori di luar angka normal (2 ditambah subdirektori).
OSX menggunakan banyak hardlink ke direktori untuk file biasa . Itu tidak mendukung ini menggunakan ln
(lihat halaman manual ). Menurut How Time Machine , Magic , melakukan ini untuk menyediakan versi yang digunakan untuk fasilitas cadangan Time Machine.
Bacaan lebih lanjut: