Mengenal FHS di Debian: Struktur Folder Sistem yang Wajib Kamu Tahu
Pernahkah kamu membuka terminal di Debian atau distribusi Linux lainnya dan bingung melihat banyak sekali folder di direktori root /? Ada /etc, /bin, /home, /usr, /var, dan masih banyak lagi. Semua folder ini bukan dibuat secara acak, melainkan mengikuti sebuah panduan standar yang sangat penting, namanya Filesystem Hierarchy Standard atau FHS. Memahami FHS itu kunci banget kalau kamu mau nyaman berinteraksi dengan Debian atau sistem Linux lainnya, apalagi kalau kamu mulai masuk ke ranah administrasi atau troubleshooting.
Apa Itu Filesystem Hierarchy Standard (FHS)?¶
Gampangnya, FHS itu semacam “aturan main” tentang di mana berbagai jenis file dan folder seharusnya diletakkan dalam sistem operasi mirip Unix, termasuk Linux. Bayangin aja kalau setiap developer software atau setiap distribusi Linux punya cara sendiri-sendiri menyimpan file executable, file konfigurasi, data pengguna, atau file sementara. Pasti bakal chaos banget kan?
FHS hadir untuk menciptakan konsistensi. Dengan adanya standar ini, seorang developer tahu di mana harus meletakkan file programnya agar bisa dijalankan sistem, administrator tahu di mana mencari file log atau konfigurasi, dan pengguna tahu di mana menyimpan data pribadinya. Ini membuat sistem jadi lebih terstruktur, mudah dikelola, dan software dari vendor berbeda bisa bekerja sama dengan lebih baik.
Image just for illustration
Mengapa FHS Itu Penting, Khususnya di Debian?¶
Debian dikenal sebagai salah satu distribusi Linux yang paling ketat dalam mengikuti standar, termasuk FHS. Kepatuhan ini adalah salah satu alasan mengapa Debian dianggap stabil dan cocok untuk server maupun desktop. Dengan FHS, Debian memastikan bahwa software yang kamu instal—baik dari repositori resminya maupun kadang dari sumber lain—akan menemukan tempatnya yang tepat dan file-file sistem lainnya berada di lokasi yang sudah diprediksi.
Bayangin kalau FHS nggak ada. Kamu instal aplikasi A, dia simpan config di /appA/config. Kamu instal aplikasi B, dia simpan config di /etc/B. Kamu instal aplikasi C, eh dia malah simpan di /home/user/C/settings. Kalau ada FHS, semua file konfigurasi biasanya ada di /etc. Ini memudahkan kamu mencari, mengedit, atau mencadangkan file-file penting. Ini essential banget buat pemeliharaan sistem dan troubleshooting.
Direktori-Direktori Kunci dalam FHS¶
Sekarang, mari kita bedah beberapa direktori paling penting yang akan sering kamu temui di sistem Debian (dan sistem Linux lainnya yang patuh FHS). Memahami isinya akan sangat membantu navigasimu di terminal.
/ (Root Directory)¶
Ini adalah direktori paling atas, “akar” dari semua direktori dan file lainnya dalam sistem. Semua yang ada di sistem Linux berasal dari sini. Kamu bisa bayangin / itu sebagai dasar piramida file sistemmu. Meskipun semua berasal dari sini, direktori / itu sendiri biasanya hanya berisi sub-direktori standar FHS, bukan file program atau data pengguna secara langsung. Hanya admin (root) yang punya izin penuh untuk menulis di direktori ini.
/bin (Binaries)¶
Di sini kamu akan menemukan file-file program (executable binaries) yang esensial untuk menjalankan sistem dan tersedia untuk semua pengguna (termasuk pengguna biasa dan root). Program-program dasar seperti ls, cd, mv, rm, cat, echo, dan lain-lain ada di sini. Program-program ini penting banget bahkan saat sistem sedang dalam mode single-user atau recovery, karena mereka nggak bergantung pada direktori lain seperti /usr.
/bin berisi perintah-perintah yang wajib ada untuk menjalankan sistem dalam kondisi paling minimal sekalipun. Mereka mandiri.
/sbin (System Binaries)¶
Mirip dengan /bin, direktori ini juga berisi file program (executable binaries). Bedanya, program di /sbin ini biasanya hanya untuk administrator sistem (root). Perintah-perintah yang ada di sini umumnya berkaitan dengan administrasi sistem, maintenance, dan troubleshooting level rendah. Contohnya ada fdisk (untuk partisi disk), fsck (untuk cek filesystem), shutdown, reboot, ifconfig (atau ip modern), dan lain-lain.
Program-program di /sbin juga esensial untuk menjalankan sistem atau memperbaiki masalah di tingkat dasar.
/etc (Configuration Files)¶
Ini salah satu direktori yang paling sering diakses oleh administrator. Direktori /etc berisi file-file konfigurasi sistem. File-file ini biasanya berbentuk teks biasa dan bisa diedit dengan text editor. Di sinilah kamu akan menemukan pengaturan untuk jaringan, layanan sistem (daemon), user dan group, boot process, dan banyak lagi. Misalnya, konfigurasi server web Apache atau Nginx biasanya ada di /etc/apache2/ atau /etc/nginx/. Pengaturan user ada di /etc/passwd, konfigurasi jaringan dasar di /etc/network/interfaces, dan seterusnya.
Direktori /etc ini adalah jantung konfigurasi sistemmu. Sangat penting untuk berhati-hati saat mengedit file di sini, dan sebaiknya selalu buat backup sebelum mengubahnya.
Image just for illustration
/home (User Home Directories)¶
Direktori ini adalah tempat di mana data pribadi pengguna disimpan. Setiap pengguna yang dibuat di sistem biasanya akan mendapatkan sub-direktori sendiri di dalam /home/, misalnya /home/nama_pengguna. Di dalam direktori home milikmu (~), kamu akan menemukan file-file pribadimu, dokumen, gambar, unduhan, dan juga file-file konfigurasi spesifik untuk aplikasimu (biasanya file tersembunyi yang diawali dengan titik, seperti .bashrc atau .config).
Memisahkan data pengguna di /home itu praktik yang bagus banget. Kalaupun sistem inti mengalami masalah atau perlu diinstal ulang, data di /home bisa tetap aman jika diletakkan di partisi terpisah.
/usr (Unix System Resources)¶
Direktori /usr adalah salah satu direktori terbesar dan paling kompleks dalam FHS. Awalnya, namanya adalah “user” (makanya /usr), tapi sekarang maknanya lebih luas menjadi “Unix System Resources”. Direktori ini berisi sebagian besar program dan file yang tidak esensial untuk booting sistem dasar, tapi sangat penting untuk operasi normal sistem dan penggunaan sehari-hari.
Di dalam /usr ada beberapa sub-direktori penting:
/usr/bin: Berisi program (executable binaries) untuk penggunaan sehari-hari yang tidak esensial untuk single-user mode. Sebagian besar aplikasi yang kamu instal akan menempatkan file eksekusinya di sini. Contoh:firefox,gedit,vlc,python./usr/sbin: Berisi program (executable binaries) untuk administrasi sistem yang tidak esensial untuk single-user mode. Contoh:service,apt,dpkg./usr/lib: Berisi shared libraries yang dibutuhkan oleh program-program di/usr/bindan/usr/sbin. Libraries ini semacam modul kode yang bisa dipakai bersama oleh banyak program./usr/local: Ini adalah direktori untuk software yang diinstal secara lokal dari sumber (misalnya kompilasi dari kode sumber) atau software yang tidak dikelola oleh package manager standar sistem (sepertiaptdi Debian). Tujuannya agar software lokal ini tidak bentrok dengan software dari sistem atau package manager. Biasanya memiliki sub-direktori yang mirip dengan/usrlainnya (seperti/usr/local/bin,/usr/local/etc,/usr/local/lib)./usr/share: Berisi data yang bisa dipakai bersama oleh berbagai program, tidak spesifik untuk arsitektur mesin. Contoh: dokumentasi (/usr/share/doc), file ikon (/usr/share/icons), file locale (data bahasa dan regional), file manual (/usr/share/man).
Pemisahan antara /bin, /sbin (untuk program dasar sistem) dan /usr/bin, /usr/sbin (untuk program sekunder) dulunya lebih ketat, terutama saat ukuran partisi sangat terbatas. Saat ini, banyak distribusi (termasuk versi Debian modern) menggabungkan atau membuat /bin dan /sbin menjadi symbolic link (tautan simbolik) ke direktori di bawah /usr (misalnya /bin menunjuk ke /usr/bin), meskipun secara konseptual FHS tetap membedakannya.
/var (Variable Data Files)¶
Direktori /var berisi file-file yang isinya berubah saat sistem berjalan. “Var” singkatan dari variable. Konten di direktori ini bisa bertambah seiring waktu atau diubah oleh proses sistem. Direktori ini sangat penting untuk melacak status sistem, log aktivitas, data sementara untuk beberapa layanan, dan cache.
Sub-direktori penting di bawah /var:
/var/log: Berisi file-file log sistem dan aplikasi. Sangat penting untuk troubleshooting. Contoh:/var/log/syslogatau/var/log/auth.log./var/cache: Berisi data cache aplikasi. Contoh: cache package manager APT ada di/var/cache/apt/. Ini bisa dihapus untuk menghemat ruang, tapi mungkin membuat beberapa operasi jadi lebih lambat di awal./var/tmp: Mirip dengan/tmp, tapi file di sini dimaksudkan untuk bertahan antar-reboot./var/spool: Berisi data yang sedang menunggu untuk diproses, seperti antrian email atau antrian cetak (print queue)./var/lib: Berisi informasi status yang persisten untuk aplikasi. Contoh: database APT ada di/var/lib/apt/. Data database seperti MySQL atau PostgreSQL juga sering disimpan di bawah/var/lib/.
Memisahkan /var ke partisi terpisah juga praktik umum di server, untuk mencegah log yang membengkak memenuhi partisi root dan membuat sistem tidak stabil.
/tmp (Temporary Files)¶
Direktori /tmp adalah tempat untuk menyimpan file-file sementara yang dibuat oleh sistem dan aplikasi. File-file di direktori ini tidak dijamin untuk bertahan antar-reboot. Biasanya, isinya akan dihapus setiap kali sistem dimulai ulang. Jadi, jangan pernah menyimpan data penting di /tmp!
Image just for illustration
/opt (Optional Application Software Packages)¶
Direktori /opt adalah tempat yang disarankan oleh FHS untuk menginstal paket software tambahan yang tidak dikelola oleh sistem package manager utama. Software komersial pihak ketiga sering kali diinstal di sini. Setiap paket biasanya diinstal dalam sub-direktori terpisah di bawah /opt (misalnya /opt/google/chrome). Ini menjaga software tersebut terisolasi dari file sistem lainnya.
/dev (Device Files)¶
Direktori /dev berisi file-file spesial yang merepresentasikan perangkat keras (hardware) yang terhubung ke sistemmu. Di Linux, “segalanya adalah file”, dan perangkat keras juga diperlakukan seperti itu. Contoh: /dev/sda mewakili hard disk pertama, /dev/sda1 mewakili partisi pertama di hard disk pertama, /dev/null adalah perangkat “buang” yang membuang semua data yang dikirim kepadanya, dan /dev/zero adalah sumber data nol. Kamu biasanya tidak akan berinteraksi langsung dengan file-file di sini kecuali jika kamu melakukan tugas administrasi tingkat rendah atau hardware troubleshooting.
/proc (Process Information)¶
Direktori /proc adalah direktori virtual yang berisi informasi tentang proses yang sedang berjalan dan kernel sistem. Direktori ini tidak menyimpan file dalam arti tradisional di hard disk, melainkan data yang dihasilkan secara real-time oleh kernel. Misalnya, /proc/cpuinfo berisi informasi tentang CPU, /proc/meminfo tentang memori, dan ada sub-direktori untuk setiap proses yang sedang berjalan (dinamai sesuai ID proses, PID). Direktori ini sangat berguna untuk memantau sistem dan troubleshooting.
/sys (System Information)¶
Mirip dengan /proc, /sys adalah direktori virtual lain yang menyediakan antarmuka ke perangkat dan kernel dalam format berorientasi objek. Direktori ini mengekspos struktur perangkat keras dalam sistem dan hubungannya, konfigurasi kernel, dan informasi low-level lainnya. Seperti /proc, kamu jarang berinteraksi langsung dengan /sys kecuali untuk tujuan diagnostik tingkat lanjut.
/lib dan /lib64 (Shared Libraries)¶
Direktori /lib berisi shared libraries yang dibutuhkan oleh program-program executable di /bin dan /sbin (program-program esensial untuk booting dan single-user mode). /lib64 ada di sistem 64-bit untuk shared libraries 64-bit. Ini berbeda dengan /usr/lib yang berisi libraries untuk program-program non-esensial.
/boot (Boot Loader Files)¶
Direktori /boot berisi file-file yang diperlukan untuk proses booting sistem, termasuk boot loader (seperti GRUB), file konfigurasi boot loader, dan gambar kernel Linux itu sendiri. Direktori ini biasanya diletakkan di partisi terpisah, terutama di setup yang lebih kompleks, untuk memastikan sistem bisa boot meskipun partisi root mengalami masalah.
/media (Removable Media Mount Point)¶
Direktori /media adalah tempat di mana removable media seperti USB flash drive, CD-ROM, atau DVD-ROM biasanya di-mount (dipasangkan ke dalam struktur direktori sistem) secara otomatis oleh desktop environment. Saat kamu mencolokkan flash drive, sistem biasanya akan membuatnya dapat diakses di bawah /media/nama_label_drive.
/mnt (Manual Mount Point)¶
Direktori /mnt adalah tempat konvensional yang digunakan untuk mount sistem file secara manual oleh administrator. Misalnya, jika kamu perlu mengakses data di partisi hard disk lain atau network share untuk sementara, kamu bisa mount sistem file tersebut ke /mnt atau sub-direktorinya (misalnya /mnt/data).
/srv (Service Data)¶
Direktori /srv berisi data spesifik situs atau layanan yang disediakan oleh sistem. Misalnya, jika sistemmu berfungsi sebagai server web, data untuk situs web tersebut mungkin disimpan di /srv/www. Jika berfungsi sebagai server FTP, data FTP mungkin di /srv/ftp. Tujuannya adalah untuk mengisolasi data layanan dari direktori lain.
FHS dan Evolusinya¶
FHS sendiri bukanlah dokumen statis, melainkan terus berkembang. Versi FHS saat ini yang paling umum adalah 2.3, meskipun ada versi yang lebih baru. Perubahan terjadi untuk mengakomodasi teknologi baru dan praktik terbaik dalam administrasi sistem. Misalnya, penggunaan /run untuk data runtime yang volatile (tidak persisten antar-reboot) adalah tambahan di versi FHS yang lebih baru, sebagai alternatif yang lebih terstruktur daripada hanya menggunakan /tmp atau in-memory filesystem lainnya.
Debian selalu berusaha keras untuk mematuhi FHS, yang berkontribusi pada reputasinya sebagai sistem yang solid dan andal. Kepatuhan pada standar ini mempermudah porting software ke Debian dan membuat pengalaman pengguna serta administrator lebih konsisten.
Tips Berinteraksi dengan Filesystem di Debian¶
- Eksplorasi: Jangan ragu menggunakan perintah
lsdancddi terminal untuk menjelajahi direktori-direktori ini. Mulai dari/, lalu masuk ke/etc,/home,/usr, dan lihat apa saja isinya. Gunakanls -luntuk melihat detail file dan izin aksesnya. - Gunakan
tree: Instal pakettree(sudo apt update && sudo apt install tree) untuk melihat struktur direktori secara hierarkis dalam bentuk pohon. Perintahtree /(hati-hati, ini bisa sangat panjang!) atautree /etcakan memberimu gambaran visual yang bagus. - Pahami Izin (Permissions): Setiap file dan direktori di Linux memiliki izin (read, write, execute) untuk pemilik (owner), grup (group), dan lainnya (others). Memahami izin ini sangat penting, terutama di direktori sistem, untuk mengetahui siapa yang bisa mengakses atau mengubah file.
- Hati-hati dengan
sudo: Saat menjalankan perintah dengansudo(sebagai root), kamu punya kekuatan penuh untuk mengubah atau menghapus file apapun. Pastikan kamu tahu persis apa yang kamu lakukan saat berinteraksi dengan direktori sistem menggunakansudo. Kesalahan kecil bisa merusak sistem. - Backup File Penting: Sebelum mengedit file konfigurasi penting di
/etc, selalu buat backup file aslinya. Misalnya,sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.
Kesimpulan¶
Memahami Filesystem Hierarchy Standard (FHS) bukan cuma soal tahu nama-nama folder. Ini adalah fondasi untuk mengerti bagaimana sistem operasi Debian (dan distribusi Linux lainnya) bekerja, di mana menemukan file-file penting, bagaimana software diinstal dan berinteraksi dengan sistem, serta bagaimana melakukan administrasi dan troubleshooting dengan efektif. FHS membawa ketertiban dalam ekosistem Linux yang luas, menjadikannya lebih mudah diakses dan dikelola untuk semua orang, mulai dari pengguna biasa sampai administrator ahli. Debian, dengan komitmennya pada standar, adalah contoh yang bagus bagaimana FHS diimplementasikan dengan rapi. Jadi, lain kali kamu melihat struktur folder di Debian, kamu sudah punya peta jalan mental untuk menavigasinya!
Bagaimana pengalamanmu menjelajahi direktori di Debian? Ada direktori lain yang menurutmu penting atau menarik untuk dibahas? Jangan ragu bagikan di kolom komentar di bawah ya!
Posting Komentar