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
rsyncdantarberoperasi 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 istimewasudo - 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:
pwdMetode 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_nameContoh:
mkdir project_filesIni 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 -laKonvensi 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"ataumkdir 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_directoryContoh:
mkdir /var/www/html/myappBatasan 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 directorySolusinya 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 ./subdirectoryMetode 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_directoryContoh:
mkdir -p /var/www/html/myapp/logs/archiveJika /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 dir3Contoh:
mkdir assets uploads cache sessionsIni 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/dataDikombinasikan dengan -p untuk beberapa jalur bertingkat:
mkdir -p /srv/project/frontend/src /srv/project/backend/src /srv/project/docsIni 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_namePola izin umum:
| Mode Oktal | Simbolik | Kasus Penggunaan Umum |
|---|---|---|
700 | rwx------ | Data pengguna pribadi, direktori kunci SSH |
750 | rwxr-x--- | Direktori aplikasi yang dibagikan dengan grup |
755 | rwxr-xr-x | Document root web publik |
770 | rwxrwx--- | Direktori tim bersama |
777 | rwxrwxrwx | Ruang scratch sementara (hindari dalam produksi) |
Contoh — membuat direktori aman untuk kunci SSH:
mkdir -m 700 ~/.sshContoh — membuat web root dengan izin yang benar:
mkdir -m 755 /var/www/html/newsiteMenggabungkan -m dan -p:
mkdir -p -m 750 /srv/app/config/secretsPerhatikan 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/buildEkspansi 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:
- Buka aplikasi Files dari menu Activities atau dock
- Navigasikan ke direktori induk tempat Anda ingin membuat folder baru
- Klik kanan pada area kosong di dalam direktori
- Pilih New Folder dari menu konteks
- 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 -euntuk membatalkan pada kesalahan apa pun - Kutip semua variabel (
"$dir") untuk menangani jalur dengan spasi dengan aman - Gabungkan
mkdir -pdenganchowndanchmoddalam 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
| Perintah | Membuat Dir Perantara | Menetapkan Izin | Beberapa Dir | Idempoten |
|---|---|---|---|---|
mkdir dir | Tidak | Tidak (menggunakan umask) | Tidak | Tidak |
mkdir -p path/to/dir | Ya | Tidak (menggunakan umask) | Tidak | Ya |
mkdir -m 755 dir | Tidak | Ya | Tidak | Tidak |
mkdir -p -m 750 path/dir | Ya | Ya (hanya dir terakhir) | Tidak | Ya |
mkdir dir1 dir2 dir3 | Tidak | Tidak (menggunakan umask) | Ya | Tidak |
mkdir -p {a,b,c}/sub | Ya | Tidak (menggunakan umask) | Ya | Ya |
Kesalahan Umum dan Cara Memperbaikinya
Kesalahan: Permission denied
mkdir: cannot create directory '/etc/myapp': Permission deniedPenyebab: Anda mencoba menulis ke direktori milik sistem tanpa hak istimewa yang ditingkatkan.
Perbaikan: Tambahkan sudo di depan:
sudo mkdir /etc/myappKesalahan: No such file or directory
mkdir: cannot create directory '/srv/app/config': No such file or directoryPenyebab: Satu atau lebih direktori perantara dalam jalur tidak ada.
Perbaikan: Gunakan flag -p:
mkdir -p /srv/app/configKesalahan: File exists
mkdir: cannot create directory 'mydir': File existsPenyebab: 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-xSaat 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
| Skenario | Perintah yang Direkomendasikan |
|---|---|
| Direktori tunggal, sesi interaktif | mkdir dirname |
| Direktori di jalur absolut yang diketahui | mkdir /full/path/dirname |
| Jalur bertingkat, beberapa induk mungkin tidak ada | mkdir -p /full/nested/path |
| Beberapa direktori saudara sekaligus | mkdir dir1 dir2 dir3 |
| Pohon multi-level kompleks dalam satu perintah | mkdir -p root/{a,b,c}/{sub1,sub2} |
| Direktori dengan izin non-default | mkdir -m 750 dirname |
| Skrip penyediaan otomatis | mkdir -p dengan chown/chmod secara berurutan |
| Langkah pipeline deployment idempoten | mkdir -p (aman untuk dijalankan ulang) |
Poin Teknis Utama
mkdir -padalah default paling aman untuk pembuatan direktori berbasis skrip atau otomatis — bersifat idempoten dan menangani jalur perantara yang hilang- Jangan pernah menggunakan izin
777pada direktori produksi; lebih suka755untuk jalur publik dan750atau700untuk data sensitif - Flag
-mdalammkdirhanya menetapkan izin pada direktori terakhir saat digunakan dengan-p— gunakanchmod -Ratau panggilanmkdirper-level untuk kontrol penuh - Ekspansi kurung kurawal adalah fitur Bash, bukan fitur
mkdir— tidak akan berfungsi dalam skrip/bin/shkecuali 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
chownsegera dalam skrip penyediaan untuk menghindari jendela di mana direktori ada dengan kepemilikan yang salah - Di lingkungan VPS Control Panels, pengguna server web (biasanya
www-dataataunginx) 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.
