16 Mayıs 2016 Pazartesi

Linux ln, ln-s komutları

Linux'ta ln, ln-s komutlarından bahsedeceğim.

ln : Dosya bağlantıları oluşturmak için kullanılır. Parametresiz kullanıldığında Symbolic ( soft ) link oluşturulur. ln-s  şeklinde kullanıldığında ise hardlink oluşturur.

Örnek : Burada ;
-linuxlink adındaki dizine dosya1 dosyası oluşturduk.
-echo ile içine deneme yazdırdık.
-cat ile içine baktık.
-ln -s kullanarak dosya1softlink adında dosya oluşturduk.
-ln kullanarak dosya1hardlink adında dosya oluşturduk ve bunları ll ile gördük.

hakan linuxlink # touch dosya1
hakan linuxlink # echo "deneme" > dosya1
hakan linuxlink # cat dosya1 
deneme
hakan linuxlink # ln -s dosya1 dosya1softlink
hakan linuxlink # ll
total 12
drwxr-xr-x 2 root  root  4096 May 16 18:13 ./
drwxr-xr-x 4 hakan hakan 4096 May 16 18:12 ../
-rw-r--r-- 1 root  root     7 May 16 18:13 dosya1
lrwxrwxrwx 1 root  root     6 May 16 18:13 dosya1softlink -> dosya1
hakan linuxlink # ln dosya1 dosya1hardlink
hakan linuxlink # ll
total 16
drwxr-xr-x 2 root  root  4096 May 16 18:13 ./
drwxr-xr-x 4 hakan hakan 4096 May 16 18:12 ../
-rw-r--r-- 2 root  root     7 May 16 18:13 dosya1
-rw-r--r-- 2 root  root     7 May 16 18:13 dosya1hardlink
lrwxrwxrwx 1 root  root     6 May 16 18:13 dosya1softlink -> dosya1


Softlink ve Hardlink arasındaki fark ?

Soft link oluşturduğumuz dosyanın orjinal dosyasını sildiğimizde softlink kullanılamaz. Ama hardlink kullanılır.

Örnek :


hakan linuxlink # rm -f dosya1
hakan linuxlink # ll
total 12
drwxr-xr-x 2 root  root  4096 May 16 18:17 ./
drwxr-xr-x 4 hakan hakan 4096 May 16 18:12 ../
-rw-r--r-- 1 root  root     7 May 16 18:13 dosya1hardlink
lrwxrwxrwx 1 root  root     6 May 16 18:13 dosya1softlink -> dosya1
hakan linuxlink # cat dosya1hardlink 
deneme
hakan linuxlink # cat dosya1softlink 
cat: dosya1softlink: No such file or directory


Gördüğünüz gibi softlinkten dosyayı açmak istediğimizde açamadık.

Aralarındaki farkın görselleştirmiş halleride aşağıdaki gibidir.



Bir dosyanın kaç tane hardlinke sahip olduğunuda stat komutuyla görebiliriz.

Örnek : stat ile dosyanın kaç tane hardlink bağlantısı olduğunu göreceğiz.


hakan linuxlink # touch ornek2
hakan linuxlink # ln ornek2 ornek2hardlink1
hakan linuxlink # ln ornek2 ornek2hardlink2
hakan linuxlink # ll
total 12
drwxr-xr-x 2 root  root  4096 May 16 18:24 ./
drwxr-xr-x 4 hakan hakan 4096 May 16 18:12 ../
-rw-r--r-- 1 root  root     7 May 16 18:13 dosya1hardlink
lrwxrwxrwx 1 root  root     6 May 16 18:13 dosya1softlink -> dosya1
-rw-r--r-- 3 root  root     0 May 16 18:24 ornek2
-rw-r--r-- 3 root  root     0 May 16 18:24 ornek2hardlink1
-rw-r--r-- 3 root  root     0 May 16 18:24 ornek2hardlink2
hakan linuxlink # stat ornek2
  File: ‘ornek2’
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d    Inode: 4328590     Links: 3
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-05-16 18:24:31.151731102 +0300
Modify: 2016-05-16 18:24:31.151731102 +0300
Change: 2016-05-16 18:24:46.027731500 +0300
 Birth: -


inode numaraları hardlinklerin hiçbirinde değişmez. Buda zaten yukarıdaki görsellerde anlatıldığı gibi dosyanın orjinali silinse dahi hardlinklerin çalışmasının sebebidir.

Hiç yorum yok:

Yorum Gönder