Yeni yazı: Active Directory Sağlık Kontrolü: krbtgt Rotasyonu ve Hesap Yaşam Döngüsü
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

Subnet Calculator

Subnet Calculator

Subnet, büyük bir IP ağını daha küçük, daha yönetilebilir parçalara bölen bir yapıdır. Alt ağlar, ağ trafiğini daha iyi yönetmek, güvenliği artırmak ve kaynakları daha verimli kullanmak için kullanılır. Her alt ağ, kendi benzersiz IP adres aralığına ve alt ağ maskesine sahip olabilir. Subnetler, ağdaki cihazların birbirleriyle doğrudan iletişim kurabilmeleri ve aynı alt ağda bulunan diğer cihazlara erişebilmeleri için bir köprü görevi görür. Alt ağlar, bir ağı daha küçük, daha ölçeklenebilir ve daha organize bir yapıya dönüştürerek ağ yöneticilerine daha fazla kontrol ve esneklik sağlar.

İşletim Sistemi (Operating System) Nedir ve Nasıl Çalışır?

İşletim Sistemi (Operating System) Nedir ve Nasıl Çalışır?

Bilgisayarlar, karmaşık işlemleri gerçekleştirebilmek ve kullanıcıların bilgisayarı etkin bir şekilde yönetebilmek için işletim sistemlerine ihtiyaç duyarlar. İşletim sistemi (Operating System), donanım ve yazılım arasında bir köprü görevi görerek bilgisayarın temel işlevlerini yönetir ve kullanıcıların bilgisayarı verimli bir şekilde kullanmalarını sağlar. Bunu bir bakıma orkestra şefine benzetilebilir, Koordinasyon ve Yönetim, Zamanlama ve Hızlandırma, Hata Yönetim ve İletişim ve Arabuluculuk(Uygulamalar ve Donanım arasında)

GNU/Linux’a İlk Adım: Temel Kabuk Kavramları

GNU/Linux’a İlk Adım: Temel Kabuk Kavramları

GNU/Linux’u keşfetmek, bilgisayar dünyasında yolculuğa başlamak isteyenler için harika bir adımdır. GNU/Linux’un temel kabuk kavramlarına bir bakış atarak, yeni başlayanlar için temel bilgiler sağlayacağız.