---
title: Bağlantılar
source: 'https://academia.sh/tr/kurslar/linuxa-giris/baglantilar'
course: "Linux'a Giriş"
language: tr
updated: '2026-08-17T18:09:56+00:00'
license: 'CC BY-SA 4.0'
---

# Bağlantılar

Dizin girdisi ile düğüm ayrımı, sabit bağın aynı düğümü paylaşması, sembolik bağın yol dizesi tutması ve iki türün kısıtlarının karşılaştırılması.

Önceki ders silmeyi "bağ koparmak" olarak tanımladı ve bir dosyanın birden çok adı
olabileceğini söyleyerek bitti. Bu ders o olasılığı kurar.

Dayanak, gezinme dersinde tanıtılan ayrımdır: **dizin girdisi** bir adı bir düğüme
eşler, **düğüm (inode)** ise dosyanın üstverisini ve veri bloklarının yerini tutar. Ad
düğümün içinde saklanmaz. Öyleyse birden çok girdinin aynı düğümü göstermesini engelleyen
bir şey yoktur.

## Sabit Bağ

**Sabit bağ (hard link)**, var olan bir düğüme yeni bir dizin girdisi eklemektir.

```
$ ln veri/ham/olcum-03.csv veri/son-olcum.csv
$ ls -li veri/ham/olcum-03.csv veri/son-olcum.csv
22143 -rw-r--r-- 2 ogrenci ogrenci 47 Jul 26 19:03 veri/ham/olcum-03.csv
22143 -rw-r--r-- 2 ogrenci ogrenci 47 Jul 26 19:03 veri/son-olcum.csv
```

İki satırda da düğüm numarası `22143`'tür ve bağlantı sayısı sütunu `1`'den `2`'ye
çıkmıştır. Bu bir kopya değildir: tek bir dosya ve iki adı vardır. Diskte ek yer
kullanılmamıştır; yalnızca bir dizin girdisi eklenmiştir.

İki ad arasında **hiyerarşi yoktur**. Hangisinin "asıl" olduğu sorusu anlamsızdır; ikisi de
aynı düğüme eşit uzaklıktadır. Bunun sonucu silmede görünür:

```
$ rm veri/ham/olcum-03.csv
$ ls -li veri/son-olcum.csv
22143 -rw-r--r-- 1 ogrenci ogrenci 47 Jul 26 19:03 veri/son-olcum.csv
$ cat veri/son-olcum.csv
zaman,sicaklik,nem
08:00,22.6,58
12:00,26.3,44
```

Adlardan biri silinmiş, bağlantı sayısı `1`'e düşmüş, veri yerinde kalmıştır. Önceki
dersteki kural burada doğrulanır: veri blokları ancak bağlantı sayısı sıfırlandığında
serbest bırakılır.

Silinen ad geri konabilir, çünkü düğüm hâlâ erişilebilirdir:

```
$ ln veri/son-olcum.csv veri/ham/olcum-03.csv
$ ls -li veri/ham/olcum-03.csv veri/son-olcum.csv
22143 -rw-r--r-- 2 ogrenci ogrenci 47 Jul 26 19:03 veri/ham/olcum-03.csv
22143 -rw-r--r-- 2 ogrenci ogrenci 47 Jul 26 19:03 veri/son-olcum.csv
```

## Sabit Bağın İki Kısıtı

Sabit bağların iki kısıtı vardır ve ikisi de düğüm kavramının doğrudan sonucudur.

**Dosya sistemi sınırını geçemez.** Düğüm numarası yalnızca kendi dosya sistemi içinde
anlamlıdır; başka bir dosya sistemindeki düğüme girdi yazılamaz.

```
$ ln veri/ham/olcum-01.csv /dev/shm/olcum-01.csv
ln: failed to create hard link '/dev/shm/olcum-01.csv' => 'veri/ham/olcum-01.csv': Invalid cross-device link
```

Bu, taşıma dersindeki gözlemin aynı kökten gelen ikizidir: aynı dosya sistemi içinde taşıma
ucuzdur, dışına taşıma kopyalamaya dönüşür. Her ikisinin de nedeni, dizin girdisinin
yalnızca kendi dosya sistemindeki düğümlere işaret edebilmesidir.

**Dizinlere kurulamaz.**

```
$ ln veri/ham veri/ham-bag
ln: veri/ham: hard link not allowed for directory
```

Yasak, dosya sistemini ağaç olarak tutmak içindir. Dizinlere sabit bağ kurulabilseydi
döngüler oluşabilir ve ağacı dolaşan her araç sonsuz özyinelemeye girebilirdi. Yasağın
tek istisnası, sistemin kendi kurduğu iki girdidir:

```
$ ls -lid veri/. veri/ham/..
21906 drwxr-xr-x 4 ogrenci ogrenci 4096 Jul 26 19:08 veri/.
21906 drwxr-xr-x 4 ogrenci ogrenci 4096 Jul 26 19:08 veri/ham/..
```

`veri/.` ile `veri/ham/..` aynı düğümü gösterir: ikisi de `veri` dizininin kendisidir.
Bu, gezinme dersinde açıklanmadan bırakılan bir sayıyı da açıklar. Bir dizinin bağlantı
sayısı şunlardan oluşur: üst dizindeki adı, kendi `.` girdisi ve her alt dizinin `..`
girdisi. `veri` dizininin iki alt dizini olduğu için sayı $1 + 1 + 2 = 4$'tür.

## Sembolik Bağ

**Sembolik bağ (symbolic link)** bambaşka bir nesnedir: kendi düğümü olan, içeriği bir
**yol dizesinden** ibaret küçük bir dosyadır. Çekirdek bu dosyayı okuduğunda içindeki yolu
çözümlemeye devam eder.

Ölçüm dizinindeki en son dosyaya sabit adla erişmek için sembolik bağ uygundur:

```
$ ln -s ham/olcum-03.csv veri/guncel.csv
$ ls -li veri
total 8
28322 lrwxrwxrwx 1 ogrenci ogrenci   16 Jul 26 19:08 guncel.csv -> ham/olcum-03.csv
21908 drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 19:07 ham
21909 drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 19:03 islenmis
```

Çıktıda dört ayrıntı vardır. Tür karakteri `l`'dir. Düğüm numarası hedefinkinden
farklıdır — ayrı bir dosyadır. Boyut `16`'dır; bu, hedefin içeriğinin değil, `ham/olcum-03.csv`
dizesinin uzunluğudur. İzin bitleri `rwxrwxrwx` görünür ve anlamsızdır: erişim denetimi
hedefin izinlerine göre yapılır.

Hedef `readlink` ile okunur, içerik ise doğrudan erişilir:

```
$ readlink veri/guncel.csv
ham/olcum-03.csv
$ cat veri/guncel.csv
zaman,sicaklik,nem
08:00,22.6,58
12:00,26.3,44
```

Çoğu komut sembolik bağı **izler**: `cat` bağı değil hedefi okur. Bağın kendisiyle
ilgilenen komutlar (`rm`, `mv`, `ls -l`) ise izlemez. `rm guncel.csv` bağı siler, hedefe
dokunmaz.

## Göreli Hedef Hangi Dizine Göredir

Sembolik bağın içindeki yol göreli olabilir. Bu durumda çözümleme, komutun çalıştırıldığı
dizine göre değil, **bağın bulunduğu dizine** göre yapılır.

Yukarıdaki bağ `veri/` içinde durur ve hedefi `ham/olcum-03.csv`'dir; çözümleme
`veri/ham/olcum-03.csv` verir. Aynı bağ farklı bir dizinde oluşturulsaydı hedef
bulunamazdı:

```
$ ln -s veri/ham/olcum-01.csv /dev/shm/olcum-01.csv
$ ls -l /dev/shm/olcum-01.csv
lrwxrwxrwx 1 ogrenci ogrenci 21 Jul 26 19:08 /dev/shm/olcum-01.csv -> veri/ham/olcum-01.csv
$ cat /dev/shm/olcum-01.csv
cat: /dev/shm/olcum-01.csv: No such file or directory
```

Bağ oluşturulmuştur — hedefin var olup olmadığı denetlenmez — ama çözümlenemez. `/dev/shm`
içinde `veri/ham` diye bir yol yoktur. Bu duruma **kırık bağ (dangling link)** denir.

Kırık bağ bir hata değil, tanımın doğal sonucudur: sembolik bağ bir yol dizesidir, hedefe
bir tutamak değildir. Hedef silinirse, taşınırsa veya bağ başka bir yere kopyalanırsa bağ
kırılır.

Seçim ölçütü buradan çıkar. Göreli hedef, bağla hedefi birlikte taşınabilir kılar: tüm ağaç
başka bir yere kopyalandığında bağ çalışmayı sürdürür. Mutlak hedef ise bağ nereye giderse
gitsin aynı dosyayı gösterir, ama ağaç taşındığında kırılır. Ağaç içi bağlarda göreli,
sistem genelindeki sabit konumlara yapılan bağlarda mutlak hedef tercih edilir.

## İki Türün Karşılaştırması

| Ölçüt | Sabit bağ | Sembolik bağ |
|---|---|---|
| Ne tutar | Aynı düğüme ikinci girdi | Hedefin yol dizesi |
| Kendi düğümü | Yok | Var |
| Dosya sistemi sınırı | Geçemez | Geçer |
| Dizine kurulabilir | Hayır | Evet |
| Hedef silinince | Veri yaşar, sayı azalır | Bağ kırılır |
| Ayırt edilmesi | `ls -i` ile aynı numara | `ls -l` çıktısında `l` ve `->` |

Kullanım ayrımı basit bir soruya indirgenir: aynı veriye ikinci bir ad mı gerekiyor, yoksa
değişebilen bir hedefe sabit bir işaret mi? Birinci durumda sabit bağ, ikinci durumda
sembolik bağ kullanılır. Proje ağacındaki `guncel.csv`, ikinci duruma örnektir: yeni bir
ölçüm dosyası geldiğinde bağın hedefi değiştirilir, bağın adı sabit kalır.

Sistem yerleşiminde de aynı yaklaşım görülür. Dizin hiyerarşisi dersindeki
`/bin -> usr/bin` bağı, eski yolun çalışmayı sürdürmesini sağlayan sembolik bir bağdır — dizine
kurulduğu için sabit bağ olamazdı.

## Özet

- Ad dosyanın bir özelliği değildir; dizin girdisi bir adı bir düğüme eşler.
- Sabit bağ aynı düğüme ikinci bir girdi ekler; bağlantı sayısı artar ve adlar arasında
  hiyerarşi yoktur.
- Sabit bağ dosya sistemi sınırını geçemez ve dizinlere kurulamaz; `.` ve `..` bu yasağın
  sistem tarafından kurulan istisnalarıdır.
- Sembolik bağ kendi düğümü olan, içeriği bir yol dizesi olan bir dosyadır; boyutu hedef
  dizesinin uzunluğudur.
- Göreli hedefli sembolik bağ, bağın bulunduğu dizine göre çözümlenir; hedef yoksa bağ
  kırıktır ve bu bir hata değil tanımın sonucudur.
- Ağaç içinde göreli, sistem genelindeki sabit konumlarda mutlak hedef tercih edilir.

## Sonraki Adım

Proje ağacı artık dosyalar, kopyalar ve bağlar içeriyor. Bu ağacın tamamını tek bir dosyaya
paketlemek — başka bir makineye göndermek veya bir zaman noktasını saklamak için — ayrı bir
sorun kümesi doğurur: bağlar nasıl saklanır, dizin yapısı düz bir bayt dizisine nasıl
çevrilir ve sıkıştırma bu işin neresindedir? Sonraki ders arşivleme ile sıkıştırmayı
birbirinden ayırarak başlar.
