Konsep File dan Direktori di Linux

Konsep File dan Direktori di Linux

Bitnesia • Aug 15, 2026 106 •EN

Pada bab sebelumnya kita telah mengenal aplikasi-aplikasi bawaan GNOME dan cara menginstal perangkat lunak tambahan. Kini kita memasuki bagian baru yang akan menjadi fondasi penting dalam memahami cara kerja Linux secara keseluruhan, yaitu filesystem. Sebelum mempelajari struktur direktori dan cara mengelola file melalui terminal, kita perlu memahami dahulu konsep-konsep dasar tentang file dan direktori di Linux. Bab ini menjelaskan filosofi "segalanya adalah file", perbedaan mendasar filesystem Linux dengan Windows, aturan penamaan file, file tersembunyi, tipe-tipe file, hingga konsep inode sebagai metadata file. Pemahaman ini akan mempermudah kita mengikuti bab-bab berikutnya.

11.1 Segalanya Adalah File di Linux

Salah satu prinsip paling mendasar dalam desain Linux dan Unix adalah filosofi "everything is a file" atau "segalanya adalah file". Prinsip ini menyatakan bahwa dalam sistem Linux, hampir semua hal yang dapat dibaca atau ditulis oleh sistem direpresentasikan sebagai file di dalam filesystem.

Yang dimaksud "file" di sini bukan hanya dokumen teks, gambar, atau video. Dalam Linux, objek-objek berikut juga diperlakukan sebagai file:

  • Data biasa, seperti dokumen, foto, program, dan konfigurasi.
  • Direktori, yang sebenarnya juga merupakan jenis file khusus yang berisi daftar file atau direktori lain.
  • Perangkat keras (hardware), seperti hard disk, keyboard, dan terminal, yang direpresentasikan sebagai file khusus di dalam direktori /dev.
  • Informasi sistem dan proses, seperti data kernel dan status proses yang tersedia melalui direktori virtual /proc dan /sys.
  • Koneksi jaringan dan komunikasi antar proses, seperti socket dan pipe.

Karena semua objek diperlakukan secara seragam sebagai file, program dapat menggunakan operasi yang sama, yaitu membuka, membaca, menulis, dan menutup, terhadap objek apa pun. Inilah yang membuat sistem Linux menjadi sederhana, konsisten, dan mudah dipadukan: sebuah utilitas yang dirancang untuk membaca file teks dapat dengan mudah digunakan pula untuk membaca data dari perangkat atau proses lain.

Sebagai contoh, perintah untuk menampilkan isi file, yaitu cat, dapat digunakan untuk membaca isi file biasa, tetapi juga dapat digunakan untuk membaca data langsung dari perangkat keras tertentu. Keseragaman inilah yang menjadi salah satu kekuatan desain Linux.

Di lapangan, filosofi ini sering dimanfaatkan langsung oleh sysadmin. Sebagai contoh, kecerahan layar laptop dapat diatur tanpa aplikasi grafis sama sekali, cukup dengan menulis angka ke file khusus di /sys/class/backlight/ menggunakan perintah seperti echo 50 | sudo tee /sys/class/backlight/*/brightness. Tidak ada API rumit yang perlu dipelajari, karena hardware tersebut sudah diperlakukan sebagai file biasa yang bisa ditulis.

11.2 Perbedaan Filesystem Linux vs Windows

Bagi pengguna yang terbiasa dengan Windows, ada beberapa perbedaan penting dalam cara Linux mengelola file dan direktori yang perlu dipahami. Perbedaan ini sering menjadi sumber kebingungan bagi pemula yang baru berpindah dari Windows ke Linux.

11.2.1 Tidak Ada Drive Letter (C:, D:)

Di Windows, setiap partisi atau perangkat penyimpanan diberi label huruf seperti C:, D:, atau E:, dan masing-masing memiliki struktur direktori sendiri yang terpisah. Misalnya, C:\\Users\\Nama\\Documents dan D:\\Backup\\Foto berada pada dua "pohon" yang berbeda.

Linux tidak menggunakan konsep drive letter sama sekali. Linux hanya memiliki satu pohon direktori tunggal yang berakar pada direktori root, ditulis dengan tanda garis miring /. Semua partisi, hard disk, USB flashdisk, bahkan perangkat penyimpanan jaringan, dipasang (mounted) ke dalam direktori tertentu di dalam pohon tunggal ini.

Oleh karena itu, alih-alih mengakses flashdisk sebagai E:\\, di Linux flashdisk tersebut akan muncul sebagai sebuah direktori, misalnya /media/nama-pengguna/nama-flashdisk. Seluruh sistem tampak sebagai satu kesatuan yang utuh, tidak peduli berapa banyak disk fisik yang terpasang. Konsep pemasangan ini, yang disebut mount, akan dibahas lebih rinci pada Bab 13.

11.2.2 Case-Sensitive

Filesystem Linux bersifat case-sensitive, artinya huruf besar dan huruf kecil dianggap berbeda. Sebagai akibatnya, nama Dokumen.txt, dokumen.txt, dan DOKUMEN.TXT adalah tiga file yang berbeda dan dapat berada berdampingan dalam satu direktori yang sama.

Hal ini berbeda dengan Windows yang secara umum bersifat case-insensitive, di mana nama-nama tersebut dianggap merujuk pada file yang sama. Bagi pengguna baru, sifat case-sensitive ini menuntut ketelitian ketika mengetik nama file atau perintah, karena kesalahan kapitalisasi dapat menyebabkan file tidak ditemukan.

11.2.3 Karakter yang Dibolehkan dalam Nama File

Linux memberikan keleluasaan yang cukup besar dalam penamaan file, tetapi tetap ada aturan yang harus dipatuhi:

  • Satu-satunya karakter yang dilarang dalam nama file adalah tanda garis miring /, karena karakter ini digunakan sebagai pemisah antar direktori. Karakter null (byte dengan nilai nol) juga tidak diperbolehkan.
  • Spasi diperbolehkan, tetapi penggunaannya memerlukan perhatian khusus. File bernama Catatan Rapat.txt sah secara teknis, namun ketika mengetiknya di terminal, kita harus memberi tanda kutip atau karakter escape agar spasi tidak ditafsirkan sebagai pemisah argumen.
  • Tanda titik (.) diperbolehkan dan tidak memiliki arti khusus seperti ekstensi di Windows. Ekstensi seperti .txt, .jpg, atau .sh hanyalah bagian dari nama file sebagai konvensi untuk memudahkan manusia, bukan aturan yang mengikat sistem.
  • Karakter khusus seperti *, ?, [, ], !, ", ', dan \\ sebaiknya dihindari karena memiliki arti khusus bagi shell dan dapat menimbulkan masalah.

Sebagai praktik yang baik, banyak pengguna Linux menyarankan untuk memakai huruf kecil, angka, garis bawah (_), dan tanda hubung (-) dalam penamaan file, serta menghindari spasi dan karakter khusus agar lebih mudah dikelola dari terminal.

Satu jebakan yang sering ditemui sysadmin di lapangan adalah nama file yang diawali tanda hubung, misalnya -laporan.txt. Perintah seperti rm -laporan.txt akan salah ditafsirkan oleh shell sebagai opsi karena diawali tanda hubung, bukan sebagai nama file, sehingga memicu pesan error yang membingungkan. Solusinya, gunakan tanda -- untuk menandai akhir opsi, misalnya rm -- -laporan.txt, atau tambahkan awalan path relatif seperti rm ./-laporan.txt.

11.3 File Tersembunyi (Dotfile)

Di Linux, sebuah file atau direktori dianggap tersembunyi apabila namanya diawali dengan tanda titik (.). File semacam ini dikenal sebagai dotfile, dan secara default tidak ditampilkan baik oleh perintah ls maupun oleh pengelola file grafis seperti Files.

Dotfile umumnya digunakan untuk menyimpan konfigurasi pengguna dan data aplikasi. Beberapa contoh yang umum kita temukan di direktori home antara lain:

  • .bashrc: konfigurasi shell Bash.
  • .profile: pengaturan lingkungan saat login.
  • .config: direktori yang berisi konfigurasi berbagai aplikasi.
  • .local: direktori data lokal milik aplikasi.
  • .ssh: direktori yang menyimpan kunci SSH untuk login jarak jauh.
  • .gitignore: daftar file yang diabaikan oleh Git.

Untuk melihat file tersembunyi di terminal, gunakan opsi -a pada perintah ls, sehingga menjadi ls -a. Pada pengelola file grafis Files, tampilkan file tersembunyi melalui menu, biasanya dengan pintasan Ctrl+H. Perintah-perintah ini akan dipelajari lebih lanjut pada Bab 15 dan 16.

11.4 Tipe-Tipe File di Linux

Ketika menjalankan perintah ls -l, karakter pertama pada setiap baris menunjukkan tipe file. Berbeda dengan anggapan umum, "file" di Linux memiliki beberapa tipe yang berbeda, dan memahami tipe-tipe ini penting untuk mengelola sistem dengan benar.

11.4.1 File Biasa, Direktori, dan Symbolic Link

Tiga tipe yang paling sering kita temui adalah:

  • File biasa (regular file), ditandai dengan -. Ini adalah tipe file untuk menyimpan data, baik teks, gambar, video, program, maupun data biner lainnya.
  • Direktori, ditandai dengan d. Direktori adalah file khusus yang isinya berupa daftar pasangan nama file dan nomor inode yang menunjuk ke masing-masing file atau direktori di dalamnya (penjelasan lebih lanjut ada di bagian Inode).
  • Symbolic link (juga disebut symlink), ditandai dengan l. Symlink adalah file yang berisi petunjuk yang mengarah ke file atau direktori lain, mirip dengan shortcut di Windows. Symlink memungkinkan satu file diakses melalui beberapa nama dan lokasi berbeda.

Symbolic link dibuat dengan perintah ln -s, dan penggunaannya akan dipelajari pada Bab 16. Symlink berguna, misalnya, untuk membuat versi pustaka (library) dengan beberapa nama, atau membuat pintasan menuju file di lokasi yang lebih mudah diingat.

Penting untuk tidak mencampuradukkan symbolic link dengan hard link, konsep lain yang akan kita bahas saat membahas inode di bagian akhir bab ini. Symbolic link adalah file terpisah dengan tipe dan nomor inode-nya sendiri (ditandai l pada ls -l), yang isinya hanyalah "alamat" menuju file lain. Karena itu, symlink akan menjadi rusak (broken link) apabila file targetnya dipindahkan atau dihapus. Hard link, sebaliknya, bukan file terpisah, melainkan nama tambahan yang menunjuk langsung ke inode yang sama dengan file aslinya, sehingga tidak akan pernah "rusak" selama salah satu namanya masih ada.

11.4.2 Device File, Socket, dan Pipe

Selain tiga tipe di atas, Linux juga memiliki tipe file khusus yang merepresentasikan sumber daya sistem:

  • Block device, ditandai dengan b, merepresentasikan perangkat yang mengakses data dalam blok, seperti hard disk dan SSD. Perangkat ini umumnya terdapat di /dev, misalnya /dev/sda.
  • Character device, ditandai dengan c, merepresentasikan perangkat yang memproses data secara karakter per karakter, seperti keyboard dan terminal, misalnya /dev/tty.
  • Socket, ditandai dengan s, digunakan untuk komunikasi antar proses, termasuk komunikasi jaringan.
  • Named pipe (atau FIFO), ditandai dengan p, digunakan untuk komunikasi antar proses dalam satu mesin, di mana data yang ditulis ke salah satu ujung akan dibaca dari ujung lainnya.

Tipe-tipe khusus ini menegaskan kembali filosofi "segalanya adalah file": perangkat keras dan mekanisme komunikasi antar proses semuanya dapat diakses melalui filesystem dengan cara yang seragam.

Tipe FileKarakterContoh
File biasa (regular file)-dokumen, foto, program
Direktorid/home, /etc
Symbolic linklpintasan ke file lain
Block deviceb/dev/sda (hard disk)
Character devicec/dev/tty (terminal)
Socketsendpoint komunikasi
Named pipe (FIFO)psaluran antar proses

11.5 Inode: Metadata File

Ketika kita menyimpan sebuah file, filesystem tidak hanya menyimpan isi (data) file tersebut, tetapi juga sejumlah informasi tentang file itu. Informasi tentang file ini disimpan dalam sebuah struktur data yang disebut inode (index node).

Inode menyimpan metadata file, yaitu informasi tentang file, bukan isi file itu sendiri. Informasi yang tersimpan dalam inode antara lain:

  • Tipe file (file biasa, direktori, symlink, dan sebagainya).
  • Permission: hak akses yang menentukan siapa boleh membaca, menulis, atau mengeksekusi file.
  • Owner dan group: identitas pemilik file dan grupnya.
  • Ukuran file dalam byte.
  • Timestamp: waktu akses terakhir, waktu modifikasi terakhir, dan waktu perubahan metadata.
  • Link count: jumlah nama yang merujuk ke inode tersebut.
  • Penunjuk ke blok data: lokasi di disk tempat isi file disimpan.

Satu hal penting untuk diingat: nama file tidak disimpan di dalam inode. Nama file disimpan terpisah di dalam direktori, yang berfungsi memetakan nama file ke nomor inode. Artinya, direktori berisi pasangan nama dan nomor inode, sedangkan inode menyimpan metadata dan penunjuk ke data.

Setiap inode memiliki nomor identitas unik di dalam filesystem. Nomor inode sebuah file dapat dilihat menggunakan perintah ls -i, sementara untuk melihat seluruh metadata yang tersimpan di dalamnya secara lebih rinci (termasuk permission, owner, ukuran, dan ketiga jenis timestamp sekaligus), gunakan perintah stat nama_file. Konsekuensi dari pemisahan nama dan inode ini antara lain: sebuah file dapat memiliki beberapa nama (melalui hard link) yang semuanya merujuk ke inode yang sama, dan nama file dapat diubah tanpa mengubah isi maupun metadata file tersebut.

Memahami inode membantu kita memahami mengapa operasi seperti mengubah nama file terasa sangat cepat (hanya mengubah entri di direktori), dan mengapa file yang sedang digunakan dapat dihapus namanya tanpa mengganggu proses yang masih membacanya.

Satu jebakan klasik yang kerap membuat sysadmin bingung adalah pesan error No space left on device padahal df -h menunjukkan kapasitas disk masih tersisa banyak. Penyebabnya biasanya bukan ruang disk, melainkan jumlah inode yang habis, karena setiap filesystem hanya menyediakan jumlah inode terbatas sejak awal dibuat. Kasus ini sering terjadi di server yang menyimpan jutaan file berukuran kecil, seperti cache atau session file. Untuk memeriksa penggunaan inode, gunakan perintah df -i, bukan df -h.

Pada bab ini kita telah mempelajari konsep-konsep dasar file dan direktori di Linux: filosofi "segalanya adalah file", perbedaan filesystem Linux dengan Windows dalam hal drive letter, case-sensitivity, dan aturan penamaan, cara kerja file tersembunyi, tipe-tipe file, serta peran inode sebagai penyimpan metadata file. Semua konsep ini merupakan fondasi yang akan terus kita gunakan pada bab-bab selanjutnya.

Pada bab berikutnya, kita akan melangkah lebih jauh dengan mempelajari struktur direktori Linux secara detail berdasarkan Filesystem Hierarchy Standard (FHS), sehingga kita memahami fungsi setiap direktori utama seperti /home, /etc, /var, dan lainnya.