Pemilihan proyek

Memilih kebutuhan otomasi nyata dengan nilai yang terukur dan kriteria kelayakan skrip.

Daftar isi

Modul penutup ini memadukan seluruh materi jalur menjadi satu proyek nyata, yaitu skrip cadangan berkala bernama cadangkan-catatan.sh. Topik ini membahas langkah sebelum kode ditulis sama sekali, yaitu memilih kebutuhan otomasi yang memang layak dikerjakan dan menyatakan nilainya dalam ukuran yang dapat diperiksa. Setelah membaca topik ini, sebuah kebutuhan harian dapat dinilai dengan kriteria yang tetap, lingkup proyeknya dapat dipertahankan, dan alasannya dapat ditulis secara jujur.

Kebutuhan otomasi yang layak#

Kebutuhan otomasi yang layak memenuhi empat tanda yang dapat diperiksa, bukan sekadar terasa melelahkan. Pertama, pekerjaan itu berulang, sehingga biaya menulis skripnya terbayar lebih dari satu kali. Kedua, aturannya tetap dan terbilang, misalnya kemas direktori, simpan arsipnya, lalu buang arsip tertua yang melebihi kuota. Ketiga, masukan dan keluarannya jelas, yaitu nama direktori sumber dan nama arsip hasil. Keempat, nilainya terukur, misalnya jumlah perintah yang dihemat pada setiap pengulangan.

Tanda-tanda tersebut menjelaskan mengapa pencadangan direktori catatan dipilih sebagai proyek modul ini. Pencadangan catatan teks berulang setiap hari, aturannya tetap, masukan dan keluarannya berupa direktori dan arsip, serta kegagalannya berakibat nyata berupa catatan yang hilang saat berkas rusak. Proyek ini juga non-komersial dan memakai berkas milik pengguna sendiri, sehingga contohnya bebas dari skenario jual beli ataupun layanan tertentu. Sebaliknya, pekerjaan yang hanya sekali dilakukan, misalnya mengganti nama seratus berkas satu kali, memenuhi tanda pertama saja dan lebih cepat dikerjakan manual daripada dengan skrip.

Mengukur nilai sebelum menulis kode#

Nilai sebuah otomasi dinyatakan sebagai perbandingan antara keadaan sebelum dan sesudah, sehingga pengukuran dilakukan terlebih dahulu pada keadaan manual. Ukuran yang paling sederhana dan tidak memerlukan alat tambahan adalah jumlah langkah yang harus diketik pada setiap pengulangan. Direktori catatan contoh berikut dibuat untuk menjadi objek pengukuran, dan isinya mewakili catatan pribadi biasa.

bash
# menyiapkan direktori catatan contoh sebagai objek pengukuran
rm -rf catatan
mkdir -p catatan
printf 'daftar belanja minggu ini\n' > catatan/belanja.txt
printf 'ide artikel: otomasi cadangan\n' > catatan/ide.txt
printf 'catatan rapat 6 november 2026\n' > catatan/rapat.txt
# jumlah berkas yang harus tersalin pada setiap cadangan manual
find catatan -type f | wc -l
text Keluaran
3

Cadangan manual untuk tiga berkas tersebut memerlukan tiga perintah pada setiap pengulangan, sebagaimana deret berikut. Deret ini bekerja dengan benar, tetapi setiap pengulangan menuntut pengetikan ulang yang sama persis dari ingatan.

bash
# cadangan manual tiga langkah yang diketik ulang pada setiap pengulangan
mkdir -p cadangan-manual
tar -czf cadangan-manual/cadangan.tar.gz catatan
ls -1 cadangan-manual
text Keluaran
cadangan.tar.gz

Pengukuran di atas menemukan tiga kelemahan yang tidak terlihat pada pandangan pertama. Nama arsipnya tetap, sehingga cadangan minggu lalu tertimpa oleh cadangan hari ini dan tidak ada riwayat untuk pemulihan. Tidak ada catatan apa pun tentang kapan pencadangan berjalan dan apa hasilnya. Tidak ada pencegahan kesalahan ketik, karena satu huruf yang salah pada cadangan-manual menciptakan direktori baru yang salah tempat. Ketiga kelemahan itulah yang menjadi target terukur proyek ini, yaitu riwayat arsip bernomor, baris log pada setiap langkah, dan validasi masukan sebelum pekerjaan dimulai.

Kriteria kelayakan skrip shell#

Tidak semua kebutuhan otomasi selesai dengan skrip shell, sehingga kelayakan alatnya juga dinilai. Shell unggul ketika pekerjaan berpusat pada berkas, direktori, dan teks, karena perintah siap pakai seperti tar, gzip, dan find sudah tersedia tanpa pustaka tambahan. Sebaliknya, pekerjaan dengan struktur data rumit atau yang memerlukan antarmuka grafis lebih cocok pada bahasa pemrograman umum. Tabel berikut merangkum penilaian untuk proyek cadangan catatan.

KriteriaKeadaan proyek cadanganPenilaian
Data utama berupa berkas dan direktoridirektori catatan tekscocok
Perintah siap pakai tersediatar, gzip, find, sortcocok
Alur logika sederhana dan berurutanvalidasi, kemas, putar, catatcocok
Perhitungan angka rumithanya penomoran dan penghitungan jumlahcocok
Antarmuka grafis diperlukantidak, cukup baris perintahcocok

Seluruh kriteria terpenuhi, sehingga skrip shell adalah pilihan yang tepat untuk proyek ini. Apabila salah satu kriteria bertanda tidak cocok, misalnya kebutuhan analisis tabel yang rumit, pilihan yang lebih tepat adalah Python atau alat lain yang memang dirancang untuk pekerjaan itu. Kejujuran dalam menilai kelayakan alat mencegah skrip yang dipaksakan lalu sulit dirawat.

Lingkup proyek cadangkan-catatan.sh#

Lingkup proyek dinyatakan secara eksplisit agar pengerjaannya tidak melebar. Proyek cadangkan-catatan.sh menerima direktori catatan sebagai sumber, mengemasnya menjadi satu arsip tar.gz bernomor urut, menjaga jumlah arsip agar tidak melebihi batas tertentu dengan menghapus yang tertua, dan mencatat setiap langkah ke log. Arsip diberi nama berurutan seperti cadangan-001.tar.gz alih-alih diberi timestamp, yakni penanda waktu pada nama berkas, sehingga daftar arsip terurut rapi dan keluaran skrip mudah diuji ulang.

AspekTermasukTidak termasuk
Pengemasandirektori sumber menjadi arsip tar.gzenkripsi arsip
Riwayatarsip bernomor dengan kuota tetappenyalinan ke mesin lain
Catatanbaris log ke keluaran standarpengiriman log ke server
Antarmukaopsi -s, -d, -n, dan -hberkas konfigurasi

Kolom kanan tabel sama pentingnya dengan kolom kiri, karena batasan yang dinyatakan sejak awal melindungi proyek dari perluasan yang tidak perlu. Enkripsi dan penyalinan ke mesin lain tersedia lewat perintah lain, sedangkan penjadwalan otomatis dibahas pada topik cron dan penjadwalan, sehingga skrip ini cukup dipastikan benar saat dipanggil secara manual. Cara melaporkan kegagalan dengan kode keluar sudah dibahas pada topik kode keluar, dan penguraian opsi dengan getopts pada topik argumen dan flag, sehingga pengerjaan proyek cukup berfokus pada perakitan. Rancangan antarmuka dan mode kegagalan dibahas pada topik rancangan proyek, sedangkan skrip utuh beserta audit shellcheck pada topik implementasi proyek.

Ringkasan#

  • Kebutuhan otomasi yang layak berulang, aturannya tetap, masukan dan keluarannya jelas, serta nilainya terukur.
  • Nilai diukur sebagai perbandingan keadaan manual dan keadaan otomatis, misalnya tiga perintah yang diketik ulang menjadi satu perintah skrip.
  • Skrip shell cocok untuk pekerjaan yang berpusat pada berkas, direktori, dan teks dengan perintah siap pakai.
  • Proyek penutup jalur ini adalah cadangkan-catatan.sh dengan lingkup pengemasan tar.gz bernomor, rotasi kuota cadangan, dan logging.

Referensi#