15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
16.11.2023

Cara Membuat Folder Baru di Ubuntu: Panduan Lengkap Manajemen Direktori

Membuat folder baru di Ubuntu terutama dilakukan dengan perintah mkdir di terminal. Sintaks dasarnya adalah mkdir folder_name, yang langsung membuat direktori di lokasi kerja Anda saat ini. Untuk struktur bertingkat, mkdir -p parent/child/grandchild membuat seluruh jalur dalam satu operasi, bahkan jika direktori perantara belum ada.

Panduan ini jauh melampaui dasar-dasarnya. Panduan ini mencakup setiap metode praktis untuk membuat direktori di Ubuntu — mulai dari pembuatan folder tunggal sederhana hingga struktur rekursif, penyediaan berbasis izin, dan pola skrip siap otomasi yang digunakan di lingkungan server produksi nyata.

Mengapa Struktur Direktori yang Tepat Penting di Server Linux

Di server Ubuntu mana pun, sistem file adalah tulang punggung setiap operasi. Direktori yang tidak terorganisir dengan baik menciptakan masalah berantai: jalur aplikasi yang rusak, hierarki izin yang salah konfigurasi, pekerjaan backup yang gagal, dan kerentanan keamanan yang disebabkan oleh direktori yang dapat ditulis semua orang yang ditempatkan di lokasi sensitif.

Pendekatan yang disiplin terhadap manajemen direktori secara langsung memengaruhi:

  • Pewarisan izin — direktori anak mewarisi izin induk kecuali secara eksplisit ditimpa, membuat keputusan struktur awal menjadi kritis
  • Cakupan backup — alat backup seperti rsync dan tar beroperasi pada pohon direktori, sehingga pengelompokan logis mengurangi kompleksitas backup
  • Konfigurasi layanan — server web (Apache, Nginx), database, dan runtime aplikasi semuanya bergantung pada jalur direktori yang dapat diprediksi dan terdefinisi dengan baik
  • Audit dan kepatuhan — jalur yang terstruktur membuat korelasi log dan analisis forensik menjadi jauh lebih cepat

Jika Anda mengelola lingkungan VPS Hosting atau Dedicated Server, menetapkan konvensi direktori yang konsisten sejak hari pertama mencegah utang teknis yang bertambah dengan cepat seiring pertumbuhan sistem.

Prasyarat

Sebelum menjalankan perintah apa pun di bawah ini, konfirmasikan hal-hal berikut:

  • Anda memiliki akses ke terminal (lokal atau melalui SSH)
  • Akun pengguna Anda memiliki izin tulis ke lokasi target
  • Untuk direktori tingkat sistem (misalnya, di bawah /etc/ atau /var/), Anda memiliki hak istimewa sudo
  • Versi Ubuntu: perintah-perintah ini berlaku secara universal untuk Ubuntu 18.04, 20.04, 22.04, dan 24.04 LTS

Untuk memverifikasi direktori kerja Anda saat ini kapan saja, jalankan:

pwd

Metode 1: Pembuatan Direktori Dasar dengan mkdir

Perintah mkdir (make directory) adalah utilitas POSIX standar untuk membuat direktori. Perintah ini tersedia di setiap distribusi Linux tanpa instalasi.

Sintaks:

mkdir directory_name

Contoh:

mkdir project_files

Ini membuat direktori bernama project_files di lokasi Anda saat ini. Perintah tidak menghasilkan output jika berhasil — ini adalah perilaku Unix standar. Untuk mengonfirmasi pembuatan:

ls -la

Konvensi penamaan yang harus diikuti dalam produksi:

  • Gunakan huruf kecil dan garis bawah atau tanda hubung: web_assets, backup-2024
  • Hindari spasi dalam nama direktori — spasi memerlukan escape (mkdir "my folder" atau mkdir my folder) dan merusak banyak skrip shell
  • Hindari karakter khusus: &, *, ?, !, | memiliki makna khusus shell dan menyebabkan perilaku yang tidak dapat diprediksi

Metode 2: Membuat Direktori di Jalur Absolut Tertentu

Daripada menavigasi ke lokasi target terlebih dahulu, Anda dapat meneruskan jalur absolut lengkap langsung ke mkdir. Ini adalah pendekatan yang lebih disukai dalam skrip dan penyediaan otomatis.

Sintaks:

mkdir /full/path/to/new_directory

Contoh:

mkdir /var/www/html/myapp

Batasan penting: Perintah ini akan gagal jika direktori perantara mana pun dalam jalur belum ada. Misalnya, jika /var/www/html/ tidak ada, perintah di atas mengembalikan:

mkdir: cannot create directory '/var/www/html/myapp': No such file or directory

Solusinya adalah flag -p, yang dibahas di Metode 3.

Menggunakan jalur relatif sama-sama valid dan sering lebih mudah dibaca dalam sesi interaktif:

mkdir ../sibling_directory
mkdir ./subdirectory

Metode 3: Membuat Direktori Bertingkat Secara Rekursif dengan -p

Flag -p (parents) adalah salah satu opsi yang paling penting secara operasional dalam mkdir. Flag ini menginstruksikan perintah untuk membuat semua direktori perantara yang hilang dalam jalur yang ditentukan, dan menekan kesalahan yang biasanya terjadi jika direktori target sudah ada.

Sintaks:

mkdir -p parent_directory/child_directory/grandchild_directory

Contoh:

mkdir -p /var/www/html/myapp/logs/archive

Jika /var/www/html/myapp/ tidak ada, satu perintah ini membuat seluruh rantai: myapp, kemudian logs di dalamnya, kemudian archive di dalamnya.

Kasus penggunaan produksi kritis — document root server web:

mkdir -p /var/www/vhosts/example.com/{public_html,logs,ssl,tmp}

Sintaks ekspansi kurung kurawal ini (dibahas secara detail di Metode 6) dikombinasikan dengan -p adalah pola standar untuk menyediakan lingkungan virtual host baru dalam satu perintah.

Flag -p juga mencegah kesalahan dalam skrip idempoten. Jika Anda menjalankan perintah mkdir -p yang sama dua kali, eksekusi kedua tidak melakukan apa pun dan keluar dengan bersih dengan kode 0. Tanpa -p, eksekusi kedua akan mengembalikan kesalahan, merusak skrip apa pun yang menggunakan set -e (keluar saat terjadi kesalahan).

Metode 4: Membuat Beberapa Direktori Secara Bersamaan

mkdir menerima beberapa argumen, membuat semua direktori yang ditentukan dalam satu pemanggilan.

Sintaks:

mkdir dir1 dir2 dir3

Contoh:

mkdir assets uploads cache sessions

Ini membuat empat direktori terpisah di lokasi saat ini. Semua direktori dibuat pada level yang sama — ini bukan struktur bertingkat.

Dikombinasikan dengan jalur absolut:

mkdir /srv/app/modules /srv/app/config /srv/app/data

Dikombinasikan dengan -p untuk beberapa jalur bertingkat:

mkdir -p /srv/project/frontend/src /srv/project/backend/src /srv/project/docs

Ini sangat berguna saat membuat kerangka struktur direktori aplikasi baru sebelum deployment.

Metode 5: Membuat Direktori dengan Izin Tertentu Menggunakan -m

Secara default, mkdir menerapkan izin berdasarkan nilai umask sistem. Di sebagian besar sistem Ubuntu, umask default adalah 0022, yang berarti direktori baru menerima izin 755 (pemilik: baca/tulis/eksekusi; grup: baca/eksekusi; lainnya: baca/eksekusi).

Dalam banyak skenario server, izin default terlalu permisif atau terlalu ketat. Flag -m memungkinkan Anda menetapkan izin yang tepat saat pembuatan menggunakan notasi oktal.

Sintaks:

mkdir -m octal_mode directory_name

Pola izin umum:

Mode OktalSimbolikKasus Penggunaan Umum
700rwx------Data pengguna pribadi, direktori kunci SSH
750rwxr-x---Direktori aplikasi yang dibagikan dengan grup
755rwxr-xr-xDocument root web publik
770rwxrwx---Direktori tim bersama
777rwxrwxrwxRuang scratch sementara (hindari dalam produksi)

Contoh — membuat direktori aman untuk kunci SSH:

mkdir -m 700 ~/.ssh

Contoh — membuat web root dengan izin yang benar:

mkdir -m 755 /var/www/html/newsite

Menggabungkan -m dan -p:

mkdir -p -m 750 /srv/app/config/secrets

Perhatikan bahwa saat menggunakan -p, mode hanya diterapkan pada direktori terakhir dalam jalur, bukan pada direktori perantara yang dibuat. Direktori perantara menerima izin berbasis umask default. Jika Anda memerlukan kontrol tepat atas semua level, buat setiap level secara individual dengan flag -m eksplisit, atau gunakan chmod setelahnya.

Metode 6: Ekspansi Kurung Kurawal untuk Pohon Direktori Kompleks

Ekspansi kurung kurawal adalah fitur shell Bash — bukan opsi mkdir — yang menghasilkan beberapa argumen dari satu pola. Dikombinasikan dengan mkdir -p, ini adalah cara paling efisien untuk membuat hierarki direktori yang kompleks.

Ekspansi kurung kurawal dasar:

mkdir -p project/{src,tests,docs,build}

Ini diperluas menjadi:

mkdir -p project/src project/tests project/docs project/build

Ekspansi kurung kurawal multi-level:

mkdir -p app/{frontend/{components,pages,styles},backend/{controllers,models,routes},shared/utils}

Ini membuat struktur berikut:

app/
├── frontend/
│   ├── components/
│   ├── pages/
│   └── styles/
├── backend/
│   ├── controllers/
│   ├── models/
│   └── routes/
└── shared/
    └── utils/

Pola ini adalah praktik standar saat menginisialisasi repositori aplikasi baru atau menyediakan direktori aplikasi di VPS dengan cPanel baru atau server bare-metal.

Metode 7: Membuat Direktori melalui GUI Ubuntu (Aplikasi Files)

Untuk instalasi Ubuntu desktop atau sesi desktop jarak jauh, aplikasi GNOME Files (Nautilus) menyediakan metode grafis.

Langkah-langkah:

  1. Buka aplikasi Files dari menu Activities atau dock
  2. Navigasikan ke direktori induk tempat Anda ingin membuat folder baru
  3. Klik kanan pada area kosong di dalam direktori
  4. Pilih New Folder dari menu konteks
  5. Ketik nama folder yang diinginkan dan tekan Enter

Pintasan keyboard: Di Nautilus, Ctrl+Shift+N membuat folder baru secara instan tanpa menggunakan menu klik kanan.

Keterbatasan pendekatan GUI:

  • Tidak dapat menetapkan izin kustom selama pembuatan — memerlukan tindak lanjut di terminal atau properti file
  • Tidak dapat membuat struktur bertingkat rekursif dalam satu operasi
  • Tidak tersedia di lingkungan server tanpa kepala (sebagian besar server Ubuntu produksi berjalan tanpa lingkungan desktop)

Untuk pekerjaan administrasi server yang serius, metode baris perintah selalu lebih disukai.

Metode 8: Skrip Pembuatan Direktori untuk Otomasi

Dalam administrasi server dunia nyata, direktori jarang dibuat secara manual satu per satu. Skrip penyediaan, pipeline deployment, dan alat manajemen konfigurasi semuanya mengandalkan pembuatan direktori otomatis.

Contoh skrip shell dasar:

#!/bin/bash
set -e

BASE_DIR="/var/www/vhosts"
DOMAIN="example.com"

directories=(
    "$BASE_DIR/$DOMAIN/public_html"
    "$BASE_DIR/$DOMAIN/logs"
    "$BASE_DIR/$DOMAIN/ssl"
    "$BASE_DIR/$DOMAIN/tmp"
    "$BASE_DIR/$DOMAIN/backup"
)

for dir in "${directories[@]}"; do
    mkdir -p "$dir"
    echo "Created: $dir"
done

# Set ownership to web server user
chown -R www-data:www-data "$BASE_DIR/$DOMAIN"
chmod -R 755 "$BASE_DIR/$DOMAIN"

echo "Directory structure for $DOMAIN provisioned successfully."

Praktik skrip utama:

  • Selalu gunakan set -e untuk membatalkan pada kesalahan apa pun
  • Kutip semua variabel ("$dir") untuk menangani jalur dengan spasi dengan aman
  • Gabungkan mkdir -p dengan chown dan chmod dalam skrip yang sama untuk memastikan izin sudah benar segera setelah pembuatan
  • Gunakan array untuk daftar direktori agar skrip tetap mudah dibaca dan dipelihara

Pendekatan ini sangat penting saat mengelola beberapa virtual host, men-deploy aplikasi di berbagai lingkungan, atau mengotomasi pengaturan server dengan alat seperti Ansible atau skrip penyediaan berbasis Bash.

Perbandingan: Opsi mkdir dan Kasus Penggunaannya

PerintahMembuat Dir PerantaraMenetapkan IzinBeberapa DirIdempoten
mkdir dirTidakTidak (menggunakan umask)TidakTidak
mkdir -p path/to/dirYaTidak (menggunakan umask)TidakYa
mkdir -m 755 dirTidakYaTidakTidak
mkdir -p -m 750 path/dirYaYa (hanya dir terakhir)TidakYa
mkdir dir1 dir2 dir3TidakTidak (menggunakan umask)YaTidak
mkdir -p {a,b,c}/subYaTidak (menggunakan umask)YaYa

Kesalahan Umum dan Cara Memperbaikinya

Kesalahan: Permission denied

mkdir: cannot create directory '/etc/myapp': Permission denied

Penyebab: Anda mencoba menulis ke direktori milik sistem tanpa hak istimewa yang ditingkatkan.

Perbaikan: Tambahkan sudo di depan:

sudo mkdir /etc/myapp

Kesalahan: No such file or directory

mkdir: cannot create directory '/srv/app/config': No such file or directory

Penyebab: Satu atau lebih direktori perantara dalam jalur tidak ada.

Perbaikan: Gunakan flag -p:

mkdir -p /srv/app/config

Kesalahan: File exists

mkdir: cannot create directory 'mydir': File exists

Penyebab: Direktori atau file dengan nama tersebut sudah ada.

Perbaikan: Gunakan -p untuk menekan kesalahan ini ketika jalur yang ada adalah direktori, atau pilih nama yang berbeda.

Kegagalan diam dalam skrip: Jika mkdir gagal dan skrip Anda tidak menggunakan set -e atau memeriksa kode keluar, operasi berikutnya mungkin berlanjut pada jalur yang tidak ada, menyebabkan kegagalan yang tidak dapat diprediksi. Selalu validasi pembuatan direktori kritis:

mkdir -p /srv/app/data || { echo "Failed to create data directory"; exit 1; }

Pertimbangan Keamanan untuk Pembuatan Direktori

Izin direktori adalah pertahanan lini pertama dalam keamanan server. Beberapa kerentanan berdampak tinggi berasal langsung dari izin direktori yang salah:

  • Direktori yang dapat ditulis semua orang (777) memungkinkan pengguna mana pun di sistem untuk menulis, memodifikasi, atau menghapus file — risiko kritis pada hosting bersama atau server multi-pengguna
  • Kepemilikan yang salah pada direktori yang menghadap web dapat memungkinkan eksploitasi aplikasi web untuk menulis file berbahaya di luar document root yang dimaksud
  • Sticky bit (chmod +t) pada direktori bersama (seperti /tmp) mencegah pengguna menghapus file milik orang lain — selalu atur ini pada direktori yang dapat ditulis bersama
  • SetGID bit pada direktori memastikan file baru mewarisi grup direktori daripada grup utama pengguna yang membuat — berguna untuk direktori proyek kolaboratif

Contoh — direktori proyek bersama yang aman:

mkdir -p /srv/shared/project
chown root:developers /srv/shared/project
chmod 2775 /srv/shared/project  # SetGID + rwxrwxr-x

Saat menghosting aplikasi web, domain yang diamankan SSL, atau layanan email, izin direktori yang tepat tidak dapat dipisahkan dari postur keamanan konfigurasi SSL Certificates dan pengaturan Email Hosting Anda.

Memverifikasi Pembuatan Direktori

Setelah membuat direktori, selalu verifikasi hasilnya sebelum melanjutkan dengan operasi yang bergantung padanya.

Daftar dengan izin terperinci:

ls -la /path/to/parent/

Verifikasi direktori tertentu ada (berguna dalam skrip):

[ -d /srv/app/config ] && echo "Directory exists" || echo "Directory missing"

Lihat struktur pohon lengkap (memerlukan paket tree):

sudo apt install tree -y
tree /srv/app/

Periksa penggunaan inode — pada server dengan banyak file kecil, kelelahan inode dapat mencegah pembuatan direktori bahkan ketika ruang disk tersedia:

df -i /srv/

Jika penggunaan inode mendekati 100%, Anda tidak dapat membuat direktori atau file baru terlepas dari ruang disk yang tersedia. Ini adalah masalah produksi umum pada server yang menghosting sejumlah besar file kecil, seperti server email atau direktori sesi PHP.

Matriks Keputusan Praktis: Metode Mana yang Digunakan

SkenarioPerintah yang Direkomendasikan
Direktori tunggal, sesi interaktifmkdir dirname
Direktori di jalur absolut yang diketahuimkdir /full/path/dirname
Jalur bertingkat, beberapa induk mungkin tidak adamkdir -p /full/nested/path
Beberapa direktori saudara sekaligusmkdir dir1 dir2 dir3
Pohon multi-level kompleks dalam satu perintahmkdir -p root/{a,b,c}/{sub1,sub2}
Direktori dengan izin non-defaultmkdir -m 750 dirname
Skrip penyediaan otomatismkdir -p dengan chown/chmod secara berurutan
Langkah pipeline deployment idempotenmkdir -p (aman untuk dijalankan ulang)

Poin Teknis Utama

  • mkdir -p adalah default paling aman untuk pembuatan direktori berbasis skrip atau otomatis — bersifat idempoten dan menangani jalur perantara yang hilang
  • Jangan pernah menggunakan izin 777 pada direktori produksi; lebih suka 755 untuk jalur publik dan 750 atau 700 untuk data sensitif
  • Flag -m dalam mkdir hanya menetapkan izin pada direktori terakhir saat digunakan dengan -p — gunakan chmod -R atau panggilan mkdir per-level untuk kontrol penuh
  • Ekspansi kurung kurawal adalah fitur Bash, bukan fitur mkdir — tidak akan berfungsi dalam skrip /bin/sh kecuali shell-nya adalah Bash
  • Selalu periksa ketersediaan inode (df -i) pada sistem file dengan kepadatan tinggi sebelum pembuatan direktori massal
  • Gabungkan pembuatan direktori dengan penugasan chown segera dalam skrip penyediaan untuk menghindari jendela di mana direktori ada dengan kepemilikan yang salah
  • Di lingkungan VPS Control Panels, pengguna server web (biasanya www-data atau nginx) harus memiliki izin eksekusi pada setiap direktori dalam jalur document root — bukan hanya direktori terakhir

FAQ

Apa perbedaan antara mkdir folder dan mkdir -p folder?

mkdir folder membuat satu direktori dan gagal jika bagian mana pun dari jalur tidak ada atau jika direktori sudah ada. mkdir -p folder membuat semua direktori perantara yang hilang dan keluar dengan diam tanpa kesalahan jika target sudah ada, membuatnya aman untuk skrip dan eksekusi berulang.

Bisakah mkdir membuat direktori dengan spasi dalam namanya?

Ya. Bungkus nama dalam tanda kutip: mkdir "my project folder" atau escape spasi: mkdir my project folder. Namun, spasi dalam nama direktori sangat tidak disarankan di server karena memerlukan escape di setiap perintah berikutnya dan merusak banyak skrip shell dan konfigurasi aplikasi.

Mengapa mkdir gagal dengan “Permission denied” bahkan dengan sudo?

Ini biasanya terjadi ketika filesystem target dipasang sebagai read-only, ketika kebijakan SELinux atau AppArmor membatasi penulisan ke jalur tersebut, atau ketika jalur berada di filesystem jaringan dengan pembatasan sisi server. Periksa opsi mount dengan mount | grep /target/path dan tinjau log AppArmor dengan sudo aa-status.

Bagaimana cara membuat direktori dan segera menetapkan pemilik dan grupnya?

mkdir sendiri tidak menetapkan kepemilikan — gunakan chown segera setelahnya: mkdir -p /srv/app && chown www-data:www-data /srv/app. Dalam satu pipeline: install -d -m 755 -o www-data -g www-data /srv/app — perintah install membuat direktori dengan pemilik, grup, dan mode dalam satu langkah.

Apa yang terjadi pada izin saat menggunakan mkdir -p dengan beberapa level baru?

Hanya direktori terakhir (terdalam) yang menerima mode yang ditentukan oleh -m. Semua direktori perantara yang baru dibuat menerima izin yang berasal dari umask saat ini. Jika izin yang konsisten di semua level diperlukan, buat setiap level secara individual dengan flag -m eksplisit atau terapkan chmod -R setelah jalur lengkap dibuat.

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai