İçerik Menüsü

16.Doküman

Sembolik Ve Katı Link

Konu Etiketleri

sembolik link , katı link , inode , düğüm , ln , touch , file

Sembolik Link Ve Katı Link

Linux sistemlerinde; sembolik ve katı olmak üzere iki çeşit bağlantı(link) türü vardır. Bunları sırası ile açıklayacak olursak;

Sembolik link ile oluşturulmuş bağlantılar; dosyaların kısayolu görevini görür ve görevi yalnızca ilgili dosyaya yönlendirme yapmaktır.

Katı link ile oluşturulmuş bağlantılar ise dosyanın kopyasıdır. Orijinal dosya silinse bile katı link içeriği korumaya devam eder.

Bağlantı türlerinin kullanımlarına geçmeden önce ufak bir bilgi daha öğrenmeliyiz o da inode kavramı.

inode(düğüm)

Inode(düğüm), dosyanın sahibi, oluşturulma tarihi, boyutu, tipi, erişim hakları, en son erişim tarihi ve en son değişikliklerin yapıldığı tarih gibi birçok meta verileri içeren yapıdır. Yani biz herhangi bir dosya oluşturduğumuzda disk üzerinde 1 inode yer kaplamaktadır. Bununla ilgili olarak inode tablosunu görmek için konsola df -i komutumuzu verelim.

Hemen çıktıları ele alarak açıklamamıza devam edelim.

Örneğin /dev/sda1 disk alanını ele alırsak toplam 5111808 adet inode numarası alabilir yani sınırı bu kadar.

Kullanılan 423003 inode numarasından toplam kullanılabilir olanı çıkarırsak (5111808-423003=4688805) geriye kullanılabilir 4688805 inode numarası kalmış oluyor.

Bunun anlamı her bir dosya 1 inode yer kapladığı için/dev/sda1 dosya sisteminde 4688805 adet daha dosya oluşturulabilecek alan mevcut.

Her bir inode(düğüm) numarasının benzersiz olduğunu söylemiştik. Bu durumu teyit etmek için bulunduğumuz konumdaki dosyaların inode numaralarını görebilmek adına komut satırımıza ls -li komutumuzu veriyoruz.

Çıktıda yer alan soldaki numaralar, ilgili dosyanın inode numarasını temsil ediyor.

Konumuza sembolik link oluşturma ile devam edelim.

Sembolik Link

Sembolik link oluşturmak için ln -s komutu kullanılır. Komutun kullanım örneği ile devam edelim.

Örnek bir dosya oluşturarak, sembolik link komutu yardımı ile dosyamıza kısayol oluşturalım.

Music dosya konumundayken touch komutu yardımı ile "klasik" isimli bir dosya oluşturduk.

Oluşturduğumuz "klasik" isimli dosyanın kısayolunu, komutumuzu ln -s dosya_adı kısayol_adı şeklinde kullanarak oluşturduk.

Son olarak ls -i komutunu vererek orijinal dosyanın ve sembolik link yardımı ile oluşturulan kısayol dosyasının inode değerlerini karşılaştırdık. Çıktıda da görüldüğü üzere değerler farklı olarak karşımıza çıkmış oldu.

Ayrıca dosyaları file isimli bir komut yardımı ile inceleyerek de bilgi alabiliriz.

Sembolik link komutu ile oluşturduğumuz dosyanın kısayol olduğunu çıktıda görebiliyoruz. Ancak son olarak kısayol dosyamızın çalışma durumunu da test edelim.

Bunun için ilk başta dosyamızın içeriğini okuyalım daha sonra orijinal dosyamıza yazı ekleyelim ve kısayoldaki değişimleri gözlemleyelim.

Orijinal dosyamın içerisine "Dosya İçeriğinin İlk Sayfası" şeklinde bir yazı ekledim. Biz orijinal dosyada yer alan bu yazıyı silip yeni bir ifade yazdıktan sonra kısayoldaki değişimi gözlemleyeceğiz.

Eğer orijinal dosyayı silersek kısayol dosyası da açılmayacak ve bizlere hata mesajı bildirilecektir.

Görüldüğü gibi kısayol dosyası orijinal kaynağı silindiği için okunamadı.

Ayrıca ilk ls -li çıktısında kısayol dosyasının sol tarafında yer alan lrwxrwxrwx ifadesindeki l harfi, dosyanın kısayol olduğunu ve -> işareti ise hangi dosyanın kısayolu olduğunu işaret ediyor.

Katı Link

Sıra geldi katı link bağlantısının kullanımına. Katı link bağlantısı için ln komutu kullanılıyor. Örnek üzerinden ilerleyelim.

Örnek olması açısından Music klasörü altında "caz" adında bir dosya oluşturuyorum. Daha sonra oluşturduğum "caz" isimli klasörün katı linkini ln caz caz_kati komutu ile oluşturuyorum.

Çıktıda dikkat edilmesi gereken nokta orijinal "caz" dosyası ile katı bağlantı "caz" dosyasının inode değerlerinin aynı olmasıdır. Bu da demek oluyor ki; her iki dosya da her yönüyle birbirlerinin aynı durumda.

Ayrıca orijinal ya da katı link ile oluşturulmuş dosyaların birinde yapacağımız değişiklik tıpkı sembolik linkte olduğu gibi diğer dosyada da geçerli olacaktır. Yani bu orijinal dosya ile katı link dosyası halihazırda bağlantılı dosyalar.

Hemen daha önce yaptığımız gibi file komutu ile orijinal dosya ve link ile oluşturulmuş dosyalarımızı karşılaştıralım.

Komutun sonucunda her ikisininde ayrı ayrı dosyalar olduğunu görmüş olduk. Bu da demek oluyor ki biz eğer orijinal dosyayı silersek sembolik linkte olduğu gibi katı link ile oluşturulmuş dosya kullanılmaz hale gelmeyecektir. Bunu da hemen test edelim.

Gördüğünüz gibi orijinal dosyayı silmeme rağmen katı link ile oluşturmuş olduğum dosya hala okunabilir durumda.

Alıştırmalar Hakkında

Yalnızca okumak yetmez, öğrendiğiniz bilgilerin kalıcı olabilmesi için bolca alıştırma yapmalısınız. Doküman içerisindeki bilgileri pekiştirmek için aşağıdaki alıştırmalar ile başlayabilirsiniz. Elbette burada yer alan alıştırma faaliyetleri dışında, konuyu öğrendiğinizi hissede kadar kendiniz de bolca pratik yapmayı da ihmal etmeyin lütfen. Aksi halde öğrendiğiniz bilgiler kısa sürede unutulup gidecektir.

Konsol üzerinden bulunduğunuz konumdaki dosyaların inode değerlerini listeleyin.(ls  komutuna ek olarak ekleyeceğiniz bir parametre ile yapabilirsiniz.)

Bulunduğunuz konuma bir dosya oluşturun ve oluşturduğunuz dosyanın sembolik linkini oluşturarak iki dosyanın da inode değerlerini karşılaştırın. Ayrıca orijinal(kaynak) dosyayı silerek sembolik link ile oluşturulmuş kısayolun çalışıp çalışmadığını teyit edin.

Tekrar bulunduğunuz dizine bir dosya oluşturun ve bu dosyanın da katı linkini oluşturarak iki dosyanın da inode değerlerini karşılaştırın. Ayrıca orijinal(kaynak) dosyayı silerek katı link ile oluşturulmuş kısayolun çalışıp çalışmadığını teyit edin.

Geri Bildirimde Bulunun

Sizlere daha verimli bir kaynak sunabilmemiz için, uygulamada veya dokümantasyonlarda yer alan tüm hata ve eksiklerimizi bize bildirebilirsiniz.

Geri Bildirimde Bulunun