Sabit bağlantılar ve kopyalanan dosyalar arasındaki fark nedir?


22

Anladığım kadarıyla, hard linkler orjinal dosyanın bir kopyasını içeriyor ve bir hard-linkli dosyayı bir dizinde silebiliyordum ve yine de diğer dizinde var olacaktı.

Öyleyse, neden zor bağlantıları kullanmak isteyeyim? Neden sadece iki ayrı dosya yok?

Yanıtlar:


29

Bir dosyayı kopyalarsanız, içeriği çoğaltacaktır. Öyleyse, tek bir dosyanın içeriğini değiştirirseniz, bunun diğeri üzerinde etkisi olmaz.

Bir hard link yaparsanız, aynı içeriğe işaret eden bir dosya oluşturulur. Dolayısıyla, dosyalardan birinin içeriğini değiştirirseniz, değişiklik her ikisinde de görülür.


3
Çok büyük dosyalar için, orijinal dosyayı kopyalamaktan her zaman daha hızlı bir bağlantı oluşturmak mı istiyorsunuz?
Jorge Bucaran

14

Sabit bağlantı temelde aynı dosya için ikinci bir dosya adıdır. Bu nedenle, bir dosyayı sabit bağlarsanız, dosya sisteminde yalnızca bir kez olacak ve bu nedenle yalnızca bir kez yer kaplayacaktır. Eğer disk alanından tasarruf etmek istiyorsanız, bunu kullanmak istersiniz.


4
Hemen cevap verdiğiniz için teşekkür ederiz. Öyleyse neden yumuşak bir link yerine sert bir link kullanmak isteyeyim?
Mike B

5
Softlink temelde başka bir dosyaya işaretçidir. Bu nedenle, orijinal dosyayı silerseniz, softlink hala var olacak, ancak kırılacak. Bir hardlink aynı dosya için 2 isimdir, bu yüzden ayrı ayrı silinebilirler.
Peter

19
Peter'ın açıklaması iyi, ama "bağlantı sayısı" dı. Dosyanın inode'unda (disk meta verisinde) bir bağlantı sayısı var. Sabit bir link, bağlantı sayısını artırır, yumuşak bir link değildir. Bağlantı sayısı sıfıra düşerse, çekirdeğin bir dosyanın içeriğini silmesine izin verilir.
Bruce Ediger

4
Alan'ın buna cevabının önemli bir noktası olduğunu düşünüyorum: bir dosyayı değiştirmek, tüm bağlantılarını değiştirir, bir kopya ile farklı içeriğe sahip olurlar.
donothings başarıyla

6

Unix dosya sistemlerinde, her dosya adı diskteki verilerin bulunduğu yere inode adı verilen zor bir bağlantıdır. Mevcut bir dosyaya yeni bir sabit bağlantı oluşturursanız, aynı veriye başka bir işaretçi olduğu için diskte fazladan yer kalmaz. Verileri bir veya başka bir bağlantıyla düzenlerseniz (veya inode'u doğrudan düzenlerseniz), her iki dosya da değişir.

Sistem, her inode'un kaç tane sabit linke sahip olduğunu tutar. Bağlantı sayısı 0 olduğunda, dosyaya artık erişilemez ve verinin üzerine yazılması güvenli olarak işaretlenir. Böylece, 2 sabit bağlantı içeren bir dosya verildiğinde, iki bağlantıdan birini silerseniz veriler silinmez. Sadece ikisini de silerseniz, veriler kaybolur.

Komuta -igeçiş düğmesini kullanarak inode dosya sayısını görebilirsiniz ls.

Yumuşak bir link ise, dosya adına göre başka bir dosyaya işaret eder. Orijinal dosyayı taşır ya da silerseniz, bağlantı kopar.


0

Sorunun “neden hiç zor bağlantılar kullanmak isteyeyim?” Diye sorduğu kısma referansla:

Sabit bağlı dosyalar (veya bunun için yumuşak (sembolik) bağlantılı dosyalar, farklı amaçlarla maskelenmek için yapılabilecek tek bir çalıştırılabilir dosyaya sahip olmanın yararlı bir yolunu sunar.

Yani, hangi seçeneklerin çalıştırılabileceğini belirlemek için kodun çağrıldığı ad incelenebilir. Bu, biraz farklı amaçlar için gereken tüm ortak işlevselliğe sahip büyük bir kod parçasının geliştirilmesine ve paketlenmesine olanak sağlar. Kullanıcının bakış açısına göre, "neyin" çalıştırılacağı (isme göre) özelliği seçimleri ve sunumu daha yönetilebilir bir seçenekler alt grubuyla sınırlar.

Klasik bir örnek LVM'dir. Bir zamanlar HP-UX çeşitli yürütülebilir için sabit bağlantılı dosyaları (kullanılan örneğin vgdisplay, vgcreate, vgextendvb Bugün, Linux gibi, bu komutlar aslında sembolik (yumuşak) bağlantılarıdır lvmçalıştırılabilir.


Bunun soru ile ilgisi yok.
rjmunro

1
@ rjmunro Farklı olmak için yalvarıyorum. OP, “neden zor bağlantıları kullanmak isteyeyim?” Diye sordu.
JRFerguson

Son örneği anlamıyorum. Bir zamanlar çok sayıda çalıştırılabilir link vardı, şimdi bir defa çalıştırılabilir link var. Bu yumuşak bağlantılar nasıl ayırt edilir?
Emanuel Berg

@EmanuelBerg Demek istediğim, sert veya yumuşak bağlantıların kullanılmasından bağımsız olarak, yürütme için geçerli olan seçenekleri ve argümanları belirleyen, yürütülebilir dosyanın çağrıldığı addır.
JRFerguson

1
@EmanuelBerg TMTOWTDI
JRFerguson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.