Yeni yazı: Kümeyi Kurmak: Ready Yazması Kümenin Çalıştığı Anlamına Gelmez
Linux Dosya ve Dizin Hiyerarşisi: Verileri Organize Etme Sanatı

Linux Dosya ve Dizin Hiyerarşisi: Verileri Organize Etme Sanatı

İçindekiler

Bir Linux sunucusuna ilk kez bağlandığınızda / altında yirmiye yakın dizin görürsünüz ve hiçbirinin adı ne işe yaradığını söylemez: /etc, /opt, /srv, /var. Bu isimler rastgele seçilmedi — her biri Filesystem Hierarchy Standard (FHS) adlı bir sözleşmenin parçası. O sözleşmeyi bilen yönetici, ömründe hiç görmediği bir dağıtımda bile log dosyasını, yapılandırmayı ve kullanıcı verisini nerede arayacağını bilir.

Bu yazıda kök dizinin altındaki yapıyı dizin dizin geziyoruz: her dizinin görevi ne, hangi veri nerede durur ve bu ayrım yedekleme ile sorun giderme kararlarınızı nasıl belirler.

Linux’ta tek bir ağaç vardır ve kökü /‘tır. Windows’taki gibi ayrı C:, D: sürücü harfleri yoktur; ikinci bir disk de sürücü harfi almaz, bu ağacın bir dalına bağlanır.

Ağaca girmeden önce bilinmesi gereken bir değişiklik var: Debian 12, Ubuntu 22.04, RHEL 9 ve Arch gibi güncel dağıtımlarda /bin, /sbin ve /lib artık gerçek dizin değil, sembolik linktir. Kendi sisteminizde doğrulayın:

ls -ld /bin /sbin /lib
# lrwxrwxrwx 1 root root 7 Haz 12 09:41 /bin  -> usr/bin
# lrwxrwxrwx 1 root root 8 Haz 12 09:41 /sbin -> usr/sbin
# lrwxrwxrwx 1 root root 7 Haz 12 09:41 /lib  -> usr/lib

Linkin tam olarak nereyi gösterdiği dağıtıma göre değişir: yukarıdaki çıktı Debian 12’ye ait, Arch ise sbin‘i tamamen bin içinde eritmiştir (/sbin -> usr/bin, /usr/sbin -> bin). Aşağıdaki açıklamalar bu dizinlerin görevini anlatır; dosyaların fiziksel olarak durduğu yer güncel sistemlerde her hâlükârda /usr altıdır.

Yeniden Kurulabilenler: /usr, /usr/local, /boot

Bu grubun ortak özelliği şu: içeriği paket yöneticisiyle yeniden üretilebilir. Diski kaybederseniz apt install ya da pacman -S bunları geri getirir; yedekleme planınızda öncelikli değildirler.

  • /usr — sistemin asıl gövdesi. Adı “user” değil Unix System Resources’tan gelir; tüm kullanıcıların paylaştığı program, kütüphane ve belge burada durur. /usr/bin komutlar, /usr/lib paylaşılan kütüphaneler, /usr/share mimariden bağımsız veri (man sayfaları, ikonlar).
  • /usr/local — paket yöneticisinin asla dokunmadığı alan. Elle derlediğiniz yazılım ve yazdığınız betikler buraya gider; /usr/local/bin varsayılan PATH‘te zaten vardır.
  • /boot — çekirdek (vmlinuz-*), initramfs ve önyükleyici dosyaları. Ayrı bir bölüm olarak kurulduysa ve dolduysa çekirdek güncellemesi yarıda kalır; eski çekirdekleri temizlemek gerçek bir bakım işidir.
  • /bin, /sbin, /lib — usr-merge sonrası /usr altına yönlenen tarihsel isimler. /sbin‘deki komutlar herkes tarafından çalıştırılabilir; root yetkisi isteyen şey komutun kendisi değil, yaptığı iştir.

Yeniden Kurulamayanlar: /etc, /home, /var, /srv, /opt

Yedeklemenin asıl konusu bu gruptur. Buradaki hiçbir şey paket yöneticisinden geri gelmez — hepsi ya sizin yazdığınız ya da sistemin zamanla biriktirdiği veridir.

  • /etc — sistemin ve kurduğunuz her uygulamanın yapılandırma dosyaları. Tamamı düz metindir, bu yüzden sürüm kontrolüne alınabilir; birçok yönetici /etc‘yi git altında tutar.
  • /home — kullanıcı ev dizinleri (/home/murat). Kişisel dosyaların yanında kullanıcıya özel ayarlar da burada: ~/.ssh, ~/.bashrc.
  • /root — root kullanıcısının ev dizini, /home altında değildir. Sebebi pratiktir: /home ayrı bir diskte olabilir ve o disk bağlanamazsa root’un yine de bir ev dizini olması gerekir. İzinleri dardır (drwx------ ya da drwxr-x---).
  • /var — sürekli büyüyen veri: /var/log günlükler, /var/lib veritabanı ve uygulama durumu, /var/spool kuyruklar. Diski dolduran dizin neredeyse her zaman budur.
  • /srv — sunucunun dışarıya servis ettiği veri: web kök dizini, FTP paylaşımı. Varsayılan olarak kullanan dağıtım azdır ama FHS’in bu iş için önerdiği yer burasıdır.
  • /opt — paket yöneticisinden gelmeyen üçüncü taraf yazılım. /usr altına dağılmak yerine kendi ağacını tek bir dizinde kurar: /opt/uygulama/bin, /opt/uygulama/lib.

Bir dizin değil ama bu grupla birlikte anılmayı hak eden tek dosya /etc/fstab: hangi disk bölümünün açılışta nereye ve hangi seçeneklerle bağlanacağını satır satır tarif eder. Yanlış yazılmış tek bir satır sistemin açılmamasına yol açabilir; bu yüzden düzenlemeden önce kopyasını almak alışkanlık hâline gelmelidir.

Diskte Yer Kaplamayanlar: /proc, /sys, /dev, /run

Bunlar gerçek dosya sistemi değildir. Çekirdeğin bellekteki durumunu dosya arayüzüyle gösterirler; sistem kapandığında içerikleri kaybolur ve yedeklenecek bir şey yoktur:

stat -f -c '%n → %T' /proc /sys /run
# /proc → proc
# /sys → sysfs
# /run → tmpfs
  • /proc — çalışan her süreç için PID’siyle adlandırılmış bir dizin: /proc/1, /proc/2324. top ya da ps çıktısında soldaki PID sütununda gördüğünüz her numaranın burada bir karşılığı vardır; bu araçlar bilgiyi başka bir yerden değil, oradaki dosyalardan okur.
  • /sys — çekirdeğin aygıt ve sürücü ağacı. /proc‘tan farkı bakış açısıdır: /proc süreçlere, /sys donanıma bakar. Fan hızı, pil durumu, ağ kartı sayaçları burada.
  • /dev — aygıtların dosya arayüzü. /dev/sda diskin kendisi, /dev/null yazılan her şeyi yutan sanal aygıttır. Bunlar aygıtın var olduğunu bildiren işaretler değil, aygıtla konuşulan kapılardır.
  • /run — açılıştan beri biriken çalışma zamanı verisi: PID dosyaları, soketler. RAM’dedir, her açılışta sıfırdan oluşur.

Bağlama Noktaları ve Geçici Alan: /mnt, /media, /tmp

  • /mnt — yöneticinin elle bağladığı dosya sistemleri için ayrılmış, normalde boş duran dizin. Bir yedek diskini mount /dev/sdb1 /mnt/yedek ile buraya bağlarsınız.
  • /media — USB bellek, harici disk ve CD gibi çıkarılabilir ortamların masaüstü ortamı tarafından otomatik bağlandığı yer. Aradaki fark niyettir: /mnt sizin, /media sistemin.
  • /tmp — geçici dosyalar. Kalıcı olduğunu varsaymayın: birçok güncel dağıtımda /tmp diskte değil RAM’dedir (tmpfs) ve yeniden başlatmada tamamen kaybolur. Diskte tutan sistemlerde bile systemd-tmpfiles belirli bir yaşın üstündeki dosyaları siler; Arch ve Fedora’da varsayılan 10 gündür (/usr/lib/tmpfiles.d/tmp.conf).

Sözleşmeye Uymazsanız Ne Olur

Yanlış dizin seçmek hemen hata vermez — bedeli aylar sonra çıkar. En sık görülen üçü:

  • Kendi betiğinizi /usr/bin‘e koymak. O dizinin sahibi paket yöneticisidir. Aynı ada sahip bir dosya getiren bir güncelleme betiğinizin üzerine yazar ve kimse bir silme komutu çalıştırmadığı için sebep uzun süre bulunamaz. Doğru yer /usr/local/bin.
  • Uygulama verisini /tmp‘ye yazmak. Yukarıdaki sebeple veri ya ilk yeniden başlatmada ya da onuncu günde yok olur. Test ederken çalışır, üretimde bir gece kaybolur.
  • /var‘ı ayrı bölüm yapmadan log biriktirmek. /var/log kök bölümle aynı diskteyse dolduğunda sistemin tamamı yazamaz hâle gelir: paket yöneticisi çalışmaz, yeni oturum açılamaz. Disk doluysa ilk bakılacak yer du -sh /var/* çıktısıdır.

Sonuç

Dizin yapısının tamamını ezberlemek gerekmez; üç ayrımı bilmek yeter:

  • Yapılandırma /etc‘de, değişen veri /var‘da, paylaşılan kaynaklar /usr‘de durur. Bir sunucuyu yedeklerken bakacağınız yer bu ayrımdır: /usr altındakiler paket yöneticisiyle yeniden kurulabilir, /etc‘deki değişiklikleriniz ve /var‘daki veriniz kurulamaz.
  • /proc ve /sys diskte yer kaplamaz. Çekirdeğin canlı durumunu dosya gibi gösteren sanal dosya sistemleridir; sistem kapandığında içerikleri kalmaz. top komutunun okuduğu değerler de oradan gelir.
  • Bir dosyayı nereye koyacağınız tercih değil, sözleşmedir. Kendi yazılımınızı /opt‘a, yazdığınız betikleri /usr/local/bin‘e koyduğunuzda sizden sonraki yönetici nerede arayacağını bilir.

Yol haritasının 2. bölümünü — temel kabuk kavramlarını — burada tamamladık. Sırada temel komutlar ve dosya işlemleri var: Dosya Oluşturma ve Kopyalama (touch, cp). Serinin tamamına GNU/Linux Öğrenme Yolculuğu sayfasından ulaşabilirsiniz.

Paylaş :

İlgili Yazılar

Sanallaştırma Virtualization Nedir ?

Sanallaştırma Virtualization Nedir ?

Sanallaştırma, bir fiziksel makinenin işlemcisini, belleğini ve diskini birden çok bağımsız makineye bölmektir. Pratik sonucu şudur: bir sunucu satın alma kararı ile o sunucuda çalışacak sistemleri belirleme kararı birbirinden ayrılır — donanım geldikten sonra kaç makineye böleceğinize istediğiniz zaman karar verirsiniz.

Mutlak Yol ve Bağıl Yol Kavramları

Mutlak Yol ve Bağıl Yol Kavramları

Bir önceki yazıda kabuktaki ilk komutları çalıştırdık ve listenin en başına pwd‘yi koyduk. O komutu neden bu kadar öne aldığımızı burada açıklıyoruz.

HomeLab Deneyimi

HomeLab Deneyimi

Bu fikir ‘Hardware Haven’ youtube kanalını izlerken aklıma geldi. Evimizde bir bilgisayarı alıp sunucu şekline getirmek. Tabi daha bir çok içeriği de gene internetten ‘homelab tour’ yazarak daha fazla içeriğe ulaşabilirsiniz çok harika fikirler var. Fiziksel olarak kendi evimde server, nas, firewall ve Backbone(omurga) switch gibi teçhizatlar yok ve almak sanırım Türkiye şartlarında çok pahalıya gelir tabi elektrik faturası da cabası.