21 Şubat 2016 Pazar

Hard ve Soft Link

Hard Link ve Soft Link'in Farkı Nedir?
Soft link silinirse gerçek dosya silinmez.

Hard link aynı dosya sistemi üzerinde oluşturulur! Soft link ise farklı dosya sistemindeki bir dosya için oluşturulabilir.

Kabuktan Hard Link Oluşturma
Windows
mklink komutu ile yapılıyor
mklink /H new.file original.file

Linux
ln komutu ile yapılıyor. Windows'takinin tersi gibi düşünülebilir. Önce mevcut dosya sonra yeni dosya yazılır.
ln original.file new.file

API Kullanarak Hard Link Oluşturma
POSIX
 int link (const char *oldname, const char *newname);
Dosyaya Hard Link Sayısını Öğrenme
Posix
Şöyle yaparız.
struct stat st;

if (stat(".."", &st) != -1) 
  printf("%d hard links\n", st.st_nlink);

Java
Hard link sayısının hakkında bilgi almak için Linux Dosya Distemi başlıklı yazıya göz atabilirsiniz.
Files.getAttribute metodu ile bilgiye erişmek mümkün.
java.nio.file.Files.getAttribute(path, "unix:nlink")

--------------------------------------------------------------------------------------
Kabuktan Soft Link Oluşturma
Soft link hiç bir yere işaret etmeyebilir (dangling softlink). Bazı softlink dosyaları bilgi içerirler ve silinmeleri doğru olmayabilir.

Windows
Dizine junction point oluşturabilir. Junction point sadece iki dosya aynı diskte ise işe yarar. Uzak diskteki dosyaya soft link oluşturmak gerekir.
mklink /j NewFolder OriginalFolder

Linux
Hard link komutu ile aynı. Sadece -s seçeneği kullanılıyor
ln -s original.file new.file

Kabuktan Soft Linki Takip Etme
Örnekte Java'nın kurulum yerini readlink -f ile bulunuyor.
[980@b449 ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java

Dosyanın Sembolik Link Olup Olmadığını Kontrol Etme
Java
Java7 ile gelen Files.isSymbolicLink() kullanılabilir.

Apache Commons
FileUtils.isSymlink() kullanılabilir. Yalnız bu metod Windows'ta çalışmıyor sanırım.


API Kullanarak Sembolik Link Oluşturma
POSIX
 int symlink (const char *oldname, const char *newname);


Hiç yorum yok:

Yorum Gönder