Saya memahami perbedaan teknis antara symlink dan hardlink, ini adalah pertanyaan tentang penggunaannya dalam praktiknya, khususnya saya ingin tahu mengapa keduanya digunakan dalam kondisi yang tampaknya serupa: /bin
direktori.
Berikut adalah fragmen listing di sistem saya:
~$ ls -lai /bin
total 10508
32770 drwxr-xr-x 2 root root 4096 Jun 14 11:47 .
2 drwxr-xr-x 28 root root 4096 Sep 6 13:15 ..
119 -rwxr-xr-x 1 root root 959120 Mar 28 22:02 bash
2820 -rwxr-xr-x 3 root root 31112 Dec 15 2011 bunzip2
127 -rwxr-xr-x 1 root root 1832016 Nov 16 2012 busybox
2820 -rwxr-xr-x 3 root root 31112 Dec 15 2011 bzcat
6191 lrwxrwxrwx 1 root root 6 Dec 15 2011 bzcmp -> bzdiff
5640 -rwxr-xr-x 1 root root 2140 Dec 15 2011 bzdiff
5872 lrwxrwxrwx 1 root root 6 Dec 15 2011 bzegrep -> bzgrep
3520 -rwxr-xr-x 1 root root 4877 Dec 15 2011 bzexe
6184 lrwxrwxrwx 1 root root 6 Dec 15 2011 bzfgrep -> bzgrep
5397 -rwxr-xr-x 1 root root 3642 Dec 15 2011 bzgrep
2820 -rwxr-xr-x 3 root root 31112 Dec 15 2011 bzip2
2851 -rwxr-xr-x 1 root root 10336 Dec 15 2011 bzip2recover
6189 lrwxrwxrwx 1 root root 6 Dec 15 2011 bzless -> bzmore
5606 -rwxr-xr-x 1 root root 1297 Dec 15 2011 bzmore
Saya membuat indentasi hardlink ke inode yang sama untuk visibilitas yang lebih baik. Jadi yang symlink digunakan dalam kasus bzcmp
, bzegrep
, bzfgrep
, bzless
dan hardlinks dalam kasus bzip2
, bzcat
, bunzip2
?
Mereka semua adalah file biasa (bukan direktori), berada di dalam satu sistem file, adalah utilitas sistem dan bahkan dibuat untuk bekerja dengan hal yang sama: arsip bzip. Apakah alasan penggunaan hardlinks / symlinks dalam kasus khusus ini murni historis atau apakah saya kehilangan sesuatu?
Klarifikasi pertanyaan saya:
Saya tidak bertanya tentang:
- Perbedaan teknis antara symlink dan hardlink
- Keuntungan dan kerugian teoretis masing-masing
Pertanyaan-pertanyaan ini telah ditanggapi di utas lain di SO. Saya mencoba memahami mengapa keputusan berbeda dibuat dalam kasus tertentu: untuk sekelompok utilitas sistem terkait. Secara teknis, mereka semua bisa saja merupakan symlinks atau mereka semua bisa berupa hardlinks, kedua opsi akan bekerja (dan dalam kedua kasus suatu program masih dapat mencari tahu bagaimana itu dipanggil melalui argv[0]
). Saya ingin memahami maksud di sini jika ada.
Terkait:
/bin
kolom ketiga sayals -lai
selalu1
jadi sepertinya hanya menggunakan tautan lunak. Distro apa yang Anda gunakan?Jawaban:
Mengapa menggunakan tautan keras vs tautan simbolik
Ada 3 keuntungan utama menggunakan hardlinks di atas tautan simbolik dalam skenario ini.
Tautan keras
Tautan simbolik
Keuntungan menghubungkan secara umum
Tautan ini ada karena banyak executable berperilaku berbeda berdasarkan bagaimana mereka dipanggil. Sebagai contoh 2 perintah
bzless
danbzmore
sebenarnya merupakan satu executablebzmore
,. Eksekusi akan berperilaku berbeda tergantung pada nama yang digunakan untuk memintanya.Ini dilakukan karena berbagai alasan. Berikut adalah beberapa yang lebih jelas:
Mengapa keduanya digunakan?
Pilihan keduanya, dalam aplikasi khusus ini, adalah moot. Entah dapat memfasilitasi fitur akting sebagai alias sehingga eksekusi tunggal dapat kelebihan beban. Itu benar-benar fitur kunci yang semakin dieksploitasi oleh para pengembang berbagai program di sini.
Dalam melihat FHS (Filesystem Hierarchy Standard) bahkan menspesifikasikannya dengan cara ini, bahwa itu bisa berupa.
kutipan
Referensi
sumber
/bin/
direktori saya ? Mengapa pengembang utilitas ini tidak menggunakan satu jenis tautan?Tampaknya Anda mencoba mencari tahu, dari praktik yang ada, apakah ada aturan nonteknis yang memberi tahu Anda jenis tautan yang digunakan. (Saya katakan tidak teknis karena Anda sudah tahu alasan teknis untuk menggunakan salah satu dari yang lain.)
Jawabannya adalah, tidak ada aturan lain. Contoh ini Anda tunjukkan dari
bzip2
paket Ubuntu hanya untuk menunjukkan bahwa banyak pengembang mencampurkannya tanpa banyak pemikiran. Ini karena tidak ada pedoman yang kuat selain perbedaan teknis, dan perbedaan itu kecil.Secara pribadi, saya lebih suka menggunakan symlink, selalu, karena saya bersedia membayar biaya overhead kecil mereka dengan imbalan sifat mendokumentasikan diri mereka.
Pengembang lain akan memilih tautan keras untuk efisiensi kecil yang mereka berikan.
Masalah ini sangat mirip spasi vs tab atau pengetikan dinamis vs statis atau Emacs vs vi , kecuali bahwa itu tidak cukup menarik untuk memicu perang suci . Seperti pertempuran yang lebih menarik, ada alasan untuk memilih salah satu opsi, tetapi kecuali jika Anda memiliki seseorang yang memberi tahu Anda mana yang harus digunakan, Anda harus memilih yang lebih masuk akal bagi Anda.
sumber