Kapan membuat tautan keras bermanfaat?

11

Pada dasarnya ada dua batasan utama dengan tautan keras:

  1. Hard link biasanya mensyaratkan bahwa tautan dan file berada di sistem file yang sama.
  2. Hanya pengguna super yang dapat membuat tautan keras ke direktori.

Dengan demikian, tautan simbolik diperkenalkan untuk mengatasi keterbatasan tautan keras. Jadi, pertanyaannya adalah, apakah tautan keras masih dibutuhkan? Mungkinkah ada situasi di mana mereka lebih berguna?

Pirooz
sumber
3
1) Symlinks tidak diikuti oleh beberapa server HTTP 2) Hard link dapat digunakan untuk backup 3) Anda dapat berbagi soket unix antara chroots 4) Anda dapat menghapus versi hard link tanpa mempengaruhi yang lain
Dietrich Epp
Bisakah server HTTP itu menggunakan hardlink yang menunjuk ke symlink? , atau Apakah saya berbicara omong kosong?
arana

Jawaban:

11

Hardlink membantu kami mengatur sistem file kami dengan cara yang jauh lebih fleksibel. Pada dasarnya, hardlink memungkinkan kita untuk mengambil satu file dan membuatnya menjadi banyak tempat di sistem file sekaligus. Pikirkan tentang skenario di mana Anda adalah seorang fotografer dan memiliki banyak foto (ini adalah contoh dari hidup saya!). Anda mungkin mengaturnya oleh orang-orang yang muncul di dalamnya, karena kadang-kadang orang meminta Anda untuk foto mereka. Tetapi Anda mungkin juga ingin mengaturnya berdasarkan lokasi dan tanggal. Tidak ada cara nyata untuk bersarang ketiga hal ini, mereka adalah kapak organisasi yang benar-benar terpisah. Jadi, Anda dapat membuat tiga hierarki berbeda untuk tiga hal berbeda ini, dan minta setiap foto ada di ketiganya, tanpaharus menyimpan setiap foto tiga kali. Itulah keajaiban hardlink. Putuskan tautan symlink, kita tidak perlu khawatir tentang di mana "file asli" berada, karena semuanya adalah file asli. Kami dapat menghapus dan memindahkan sesuka hati, karena file tersebut akan dipertahankan hingga tidak ada lagi referensi padanya, dan dihapus ketika Anda menghapus hardlink terakhir. Ini sederhana dan tidak mengharuskan Anda untuk melacak sangat banyak.

jcrawfordor
sumber
1
Atau satu mungkin memiliki satu program yang satu ingin memohon dengan tiga nama gzip, gunzipdan zcat.
JdeBP
8

Konten file tidak akan dihapus sampai semua tautan keras (ya, semua nama file adalah tautan keras, bahkan yang pertama) telah dihapus dan file ditutup. Dengan demikian, ini bisa berguna ketika file diperlukan di banyak tempat, tetapi dapat dihapus dari salah satu dari mereka kapan saja, misalnya antara ~/Downloads/coolsong.mp3dan ~/Music/Cool Song.mp3.

Ignacio Vazquez-Abrams
sumber
3
Itu benar. Saya menggunakannya untuk terus mengunggah torrent sambil memiliki file dengan nama yang benar di folder film bersih saya. Jauh lebih mudah daripada memindahkan dan mengganti nama file yang sedang diunggah, dan saya cukup menghapus folder torrent ketika saya selesai melakukan seeding. Itu juga bagaimana Couch Potato melakukannya.
Nicolas Bouliane
1

Satu keuntungan yang tidak terlalu penting dari sebuah tautan keras di atas tautan simbolis adalah bahwa ketika mencapai inode untuk tautan keras, kernel tidak memiliki proses lebih lanjut untuk mengakses file. Ketika menemukan tautan simbolik, kernel harus membaca nilai tautan dan melanjutkan melintasi struktur direktori sebelum sampai ke inode untuk file. Ini membutuhkan waktu lebih lama, meskipun perbedaannya tidak selalu mudah diukur. Itu akan sangat menyenangkan ketika salah satu elemen pada nilai symlink itu sendiri adalah symlink.

Jonathan Leffler
sumber
Poin luar biasa. Di Solaris, seseorang dapat membuat loop menggunakan symlink, yang prosesnya bahkan lebih menyenangkan :-)
1

ada beberapa alasan untuk tautan keras

  1. untuk menyimpan referensi ke file sampai referensi terakhir hilang (seperti yang ditunjukkan Ignacio)
  2. ketika Anda melakukan hard-link file, mereka hanya mengambil ruang satu file dalam sistem file (kedua referensi ke file tersebut berbagi i-node yang sama). Oleh karena itu hard-link harus berada pada sistem file yang sama.

Jadi salah satu alasan untuk menggunakan tautan keras adalah mungkin menghemat banyak ruang ...

Anda dapat menambahkan ke salah satu referensi dan data masuk ke file bersama. Anda juga dapat menambahkan satu deskriptor file saat membaca dari yang lain (mis. Dengan tail -f)

Tilo
sumber
0

Banyak contoh yang diberikan di sini valid, tetapi akan berfungsi sama baiknya dengan tautan lunak (mis. Masalah "perlu satu file di beberapa tempat").

Contoh yang bagus untuk mana tautan keras sangat membantu adalah perangkat lunak cadangan Dirvish :

Dirvish adalah sistem cadangan jaringan yang cepat, berbasis disk, dan berputar.

Dengan dirvish Anda dapat memelihara satu set gambar lengkap sistem file Anda dengan kreasi dan berakhirnya tanpa pengawasan. Vault cadangan dirvish seperti mesin waktu untuk data Anda.

Dirvish membuat cadangan di tingkat sistem file (yaitu menyalin file, tidak membuat gambar), dengan menyalin file ke sistem file (cadangan) terpisah (seperti harddisk USB). Setiap kali Anda membuat cadangan, dirvish akan membuat salinan terpisah dari pohon direktori yang akan disimpan.

Kuncinya adalah bahwa jika dirvish mendeteksi bahwa sudah ada salinan cadangan dari pohon yang Anda simpan, itu akan secara otomatis menggunakan kembali file yang belum diubah, dengan membuat tautan keras di pohon baru ke file di pohon yang lama.

Dengan cara itu, setiap salinan cadangan adalah salinan lengkap, lengkap dari pohon direktori, tetapi pada saat yang sama hanya file yang diubah yang benar-benar mengambil ruang dalam sistem file. Dengan kata lain, Anda mendapatkan manfaat cadangan tambahan (penghematan ruang) dan cadangan penuh (pengambilan mudah) secara bersamaan.

Ini hanya dimungkinkan karena tautan keras benar-benar transparan ke alat userspace.

Ini mungkin juga akan bekerja dengan tautan simbolis (walaupun Anda akan mendapatkan masalah saat mencadangkan data yang menggunakan tautan simbolis itu sendiri), tetapi satu keuntungan hanya mungkin dengan tautan keras adalah:

Jika Anda ingin membuang cadangan lama, Anda cukup menghapus pohon direktori cadangan yang sesuai. File yang hanya ditautkan dari pohon itu dihapus secara otomatis oleh sistem file (karena tautan keras terakhirnya dihapus), tetapi file yang juga muncul di salinan lain tetap ada di disk.

sleske
sumber
Kedengarannya seperti rsnapshot.
Ignacio Vazquez-Abrams
0

Satu kasus yang bermanfaat adalah, katakanlah, ketika Anda memiliki program (atau skrip) yang perlu mengunduh tarball sementara yang besar dan setelah mengekstraknya, program Anda akan segera menghapusnya.

Jika Anda karena suatu alasan ingin mempertahankan tarball itu untuk penggunaan di masa mendatang, cara terbaik ln /tmp/tarball.tgz ~adalah saat tarball masih diunduh. Maka Anda tidak perlu melakukan apa pun.

Saat unduhan selesai, dan bahkan setelah program Anda menghapus yang 'asli', salinan persisnya masih ada di direktori home Anda.

navigaid
sumber
0

Saya menggunakan 'Tautan Keras' untuk mencadangkan beberapa 'HowTos' dan Cuplikan saya

Saya memiliki direktori bernama 'Shared Documents' di pengguna / root saya. Dalam direktori itu saya memiliki 'tautan keras' ke tips, trik, cuplikan, howto's yang tinggal di direktori yang sesuai; php, mysql, css, regex, formula, linux, dll. Memiliki mereka di 'satu tempat' membuatnya lebih mudah untuk digunakan, memperbaruinya daripada harus melompat-lompat di Dokumen / direktori saya mencari dokumen-dokumen ini yang sering saya gunakan.

Dulu, saya menggunakan symlink. Saya dengan setia akan mencadangkan direktori 'Shared Documents' yang umum ini ke server saya. Masalahnya adalah, symlinks atau 'Soft Links', jika disalin (cp -auv) atau tar'ed dan disalin, HANYA mencadangkan atau menyalin 'tautan' dan BUKAN isi dokumen. Jadi, saya harus menelusuri direktori dan menyalin masing-masing 2 lusin file dari lokasi mereka yang sebenarnya.

Dengan HARD LINKS, saya dapat menyalin, tar, rsync direktori 'Shared Docs' dan benar-benar mem-backup dokumen-dokumen yang tersebar luas dengan percaya diri, kontennya sebenarnya didukung. Ini benar-benar menyebalkan bagi saya, ketika saya menyadari saya telah mencadangkan 0 gigitan 'file tautan' dan Bukan informasinya.

Kelemahan dari menggunakan 'Tautan Keras' adalah bahwa melakukan ls pada direktori tidak memberi Anda indikasi bahwa suatu file 'ditautkan' dengan file lain atau di mana file itu dapat hidup berdampingan. Ada beberapa cara untuk menemukannya, tapi saya katakan itu tidak jelas dengan ls -l -> point to ... Jadi, saya biasanya menambahkan catatan di awal dokumen yang menunjukkan direktori / file apa file ini file 'dibagikan' dengan

Landis.

Landis Reed
sumber