Apa sajakah kegunaan khas dari tautan keras?

9

Setiap orang yang terbiasa dengan Windows dapat membayangkan apa itu symlink dan bagaimana mereka digunakan. Di sisi lain, konsep hard link asing bagi Windows (apakah saya benar?).

Saya ingin tahu apa kegunaan khas tautan keras di Linux. Saya sudah melihat posting berbeda yang menggambarkan perbedaan dalam cara kerjanya. Apa yang saya tanyakan adalah situasi khas apa ketika pengguna akan lebih baik menggunakan tautan keras daripada symlink?

Melakukan
sumber
3
Pertanyaan ini telah ditanyakan pada Unix & Linux stackexchange: Mengapa ada tautan keras?
Flimm

Jawaban:

9

Saya menggunakan tautan keras di mana saya memerlukan satu file di dua tempat atau lebih, saya memperkirakan bahwa suatu hari saya ingin menghapus salah satu lokasi, dan saya mungkin lupa bahwa saya memiliki tautan ke file tersebut. Ini mencegah saya mengakhiri dengan tautan simbolis ke file yang tidak ada lagi.

Klarifikasi:

Nama file sebenarnya adalah tautan keras ke file tersebut. Dengan demikian, setiap file memiliki setidaknya satu tautan keras, yang biasanya kita anggap sebagai nama file "the". Ketika Anda menghapus file, sebenarnya Anda menghapus tautannya (karena itu nama "hapus", yaitu rm, bukannya "hapus"). Ketika file memiliki tautan keras terakhir yang dihapus, sistem juga menghapus file.

Paddy Landau
sumber
7

Tautan keras memungkinkan ...

  • satu executable memiliki lebih dari satu nama.

    Contoh:

    ls -l /bin | grep -v ' 1 ' | sortakan mencantumkan yang di /binuntuk Anda. Hasil ...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

    Alih-alih 3 file bunzip2 bzcat dan bzip2 menggunakan file yang sama dan di dalam file perbedaan dibuat untuk apa yang harus dilakukan. Menghemat kode dan mengurangi kode berarti mengurangi kemungkinan bug dan perawatan yang lebih mudah.

  • satu file untuk diakses oleh beberapa jalur.

    Ambil contoh manajer paket, yang membuat direktori / usr / share / doc / $ nama paket untuk setiap paket yang diinstal dan di dalam direktori itu file yang disebut LICENSE dengan informasi lisensi paket. Banyak paket pada sistem Linux umum berlisensi GPL, jadi alih-alih memiliki 200 salinan GPL pada sistem file, hanya ada satu salinan dan 199 tautan. ptman @ Serverfault

Alasan mengapa tautan keras berfungsi di sini (dan tautan lunak tidak): menghapus hanya 1 tautan keras tidak menghapus file itu sendiri.

Rinzwind
sumber
2
"Contoh: move ( mv) adalah salinan ( cp) + a remove ( rm)." Ini benar hanya ketika sumber dan tujuan berada pada tunggangan yang berbeda. Kalau tidak, mvhanya memindahkan nama, bukan file.
Paddy Landau
1
Jika Anda ingin pergi teknis: mv mengubah inode bukan nama. Tapi Anda benar: Sepertinya contoh itu agak lama sekarang dan saya seharusnya menggunakan gzip sebagai contoh;)
Rinzwind
3
Kami mendapatkan sedikit di luar topik, tapi saya baru saja menguji ini. Selama file tetap di mount yang sama, mvubah nama saja; inode tetap sama.
Paddy Landau
Ini tidak benar-benar menjelaskan mengapa Anda tidak bisa hanya menggunakan symlink - yang dapat Anda simpan untuk beberapa byte data tambahan. Ini diatasi dengan benar dalam jawaban ini .
Ken Sharp