Linux Hands-on 1 (File Management and Directory Operations)
5 min read

Artikel ini akan menceritakan pengalaman saya menyelesaikan tugas Community DevOps Focus Group. Tugas ini terdiri dari 4 bagian, dan saya akan memisahkannya ke dalam beberapa artikel. Pada artikel pertama ini, saya akan berfokus pada tugas-tugas yang berkaitan dengan file management dan directory operations.
Sebelum menjalankan perintah pertama, kita perlu memasang flog untuk menghasilkan log palsu dan stress untuk mensimulasikan beban CPU dan memori. Saya juga memasang tree untuk mempermudah visualisasi struktur direktori.
https://github.com/mingrammer/flog
sudo apt install stress
sudo apt install tree

Task 1.1: Create the following directory structure:
mkdir -p project/reports/2024 project/reports/2025 project/scripts project/data

Task 1.2: Create empty files in reports/2024
touch project/reports/2024/q1.txt
touch project/reports/2024/q2.txt
touch project/reports/2024/q3.txt

Kita bisa pakai perintah touch buat bikin file. Perintah ls digunakan untuk menampilkan daftar berkas dan direktori. Berikut penjelasan opsi yang digunakan:
-l: Menampilkan daftar dalam format long listing (panjang), yang memberikan informasi detail seperti izin berkas, pemilik, grup, ukuran, tanggal modifikasi, dan nama berkas.-h: Menampilkan ukuran berkas dalam format human-readable (mudah dibaca manusia), misalnya KB, MB, atau GB, bukan dalam byte.-t: Mengurutkan daftar berdasarkan waktu modifikasi terakhir.
Jadi, ls -lht akan menampilkan daftar berkas dan direktori dalam format panjang, dengan ukuran yang mudah dibaca, dan diurutkan berdasarkan waktu modifikasi terakhir.
Penjelasan File Permission (Izin Berkas) di Linux:
Izin berkas di Linux mengatur siapa yang boleh melakukan apa terhadap suatu berkas. Izin ini direpresentasikan dalam sepuluh karakter, contohnya -rw-rw-r--.
Karakter pertama (
-): Menunjukkan jenis berkas.-berarti berkas biasa,dberarti direktori,lberarti symbolic link, dan lainnya.Sembilan karakter berikutnya dibagi menjadi tiga kelompok, masing-masing untuk owner (pemilik), group (kelompok), dan others (lainnya).
Setiap kelompok memiliki tiga bit:
r: Read (baca) - Izin untuk membaca isi berkas.w: Write (tulis) - Izin untuk mengubah atau menghapus isi berkas.x: Execute (eksekusi) - Izin untuk menjalankan berkas (jika berkas tersebut adalah program yang dapat dieksekusi).
Tanda
-berarti izin tersebut tidak diberikan.
Dalam contoh -rw-rw-r--:
Owner: Memiliki izin baca (
r) dan tulis (w), tetapi tidak memiliki izin eksekusi (-).Group: Memiliki izin baca (
r) dan tulis (w), tetapi tidak memiliki izin eksekusi (-).Others: Memiliki izin baca (
r), tetapi tidak memiliki izin tulis (-) dan eksekusi (-).
Task 1.3: Move q1.txt to 2025
mv project/reports/2024/q1.txt project/reports/2025/

mv itu artinya "move" alias mindahin. Nah, biar nggak nyasar, mending tulis perintah lengkap sama alamat lengkap filenya, jangan cuma q1.txt doang. Kalau tiba-tiba muncul pesan "No such file or directory", itu biasanya gara-gara alamat filenya salah.
Task 1.4: Copy q2.txt to scripts dan rename menjadi analysis.txt
cp project/reports/2024/q1.txt project/scripts/analysis.txt

Task 1.5: list files in 2025 and save output to file file_list.log
ls project/reports/2025 > file_list.log
Task 1.6: Append “Task Completed” to q3.txt
echo "Task Completed" >> project/reports/2024/q3.txt
cat project/reports/2024/q3.txt

echo "Task Completed": Nah, bagian ini artinya kita mau "ngomong" atau "nulis" kalimat "Task Completed".echoitu kayak perintah buat nampilin sesuatu di layar, tapi di sini kita mau tampilinnya di dalam file.>>: Tanda ini nih yang penting. Ini artinya kita mau "nambahin" tulisan "Task Completed" tadi ke dalam file. Jadi, kalau di file udah ada tulisan lain, tulisan "Task Completed" ini bakal ditaruh di baris baru, di bawah tulisan yang lama. Beda kalau kita pakai tanda>, kalau pakai ini, tulisan yang lama di file akan dihapus dan diganti dengan tulisan "Task Completed".cat: Nah, kalaucatini kayak baca buku. Dia bakal nampilin isi file ke layar.
Task 1.7: Display directory structure and save to structure.log
tree project/ > structure.log

tree: Nah, perintah tree ini kayak tukang kebun yang rapi banget. Dia bakal nunjukin struktur folder dan file kita dalam bentuk pohon, lengkap dengan cabang-cabangnya. Jadi, kita bisa lihat dengan jelas, file ini ada di dalam folder apa, folder itu ada di dalam folder apa lagi, dan seterusnya.
Task 1.8: Delete analysis.txt and confirm
rm project/scripts/analysis.txt
rm: Nah, kalau rm ini artinya "remove" alias hapus. Jadi, perintah ini digunakan untuk menghapus file atau folder.
Task 1.9: Copy the entire project directory
cp -r project/ project-old
cp: Nah, kalaucpini artinya "copy" alias salin. Jadi, perintah ini digunakan untuk menyalin file atau folder.-r: Opsi-rini singkatan dari "recursive". Artinya, kalau yang disalin itu folder, maka semua isinya (termasuk subfolder dan file-file di dalamnya) juga ikut disalin.project/: Ini adalah lokasi folder yang mau kita salin. Dalam contoh ini, kita mau menyalin folderproject/beserta seluruh isinya.project-old: Ini adalah nama folder baru hasil salinan. Jadi, kita akan membuat folder baru bernamaproject-oldyang isinya sama persis dengan folderproject/.
Task 1.10: Delete Original project
rm -ri project

rm: Nah, kalaurmini artinya "remove" alias hapus. Jadi, perintah ini digunakan untuk menghapus file atau folder.-r: Opsi-rini singkatan dari "recursive". Artinya, kalau yang dihapus itu folder, maka semua isinya (termasuk subfolder dan file-file di dalamnya) juga ikut dihapus.-i: Opsi-iini singkatan dari "interactive". Artinya, sebelum menghapus setiap file atau folder, perintah ini akan bertanya dulu ke kita, "Yakin mau dihapus nggak nih?". Jadi, kita punya kesempatan untuk berpikir ulang sebelum file atau folder benar-benar hilang.project: Ini adalah nama folder yang mau kita hapus beserta seluruh isinya.
Task 1.11: Create a 5GB file
truncate -s 5G large_file.dat

truncate: Nah, kalautruncateini artinya "memotong" atau "memangkas". Perintah ini digunakan untuk mengubah ukuran file, bisa memperbesar atau memperkecil.-s 5G: Opsi-sini digunakan untuk menentukan ukuran file yang baru. Dalam contoh ini, kita mau membuat ukuran file menjadi 5 Gigabyte (5G). Kamu bisa menggunakan satuan lain seperti K (Kilobyte), M (Megabyte), atau G (Gigabyte).large_file.dat: Ini adalah nama file yang ukurannya mau kita ubah.
