Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Bash Lanjutan

Pelajaran 13 dari 15

Otomasi perawatan

Rotasi log dan cadangan bertanggal

Setelah pelajaran ini kamu bisa memutar berkas log bernomor tanpa menimpa isi lama, menyisipkan tanggal ke nama salinan, dan membuang cadangan di luar batas simpan.

±13 menitDiperiksa 5 Okt 2026

Materi

Berkas log terus bertambah besar. Rotasi memindahkan log yang sedang dipakai menjadi arsip bernomor dan memulai log baru: app.log menjadi app.log.1, app.log.1 menjadi app.log.2, dan seterusnya sampai batas, sedangkan arsip tertua dibuang. Di banyak distribusi Linux, tugas ini dijalankan program logrotate dengan pengaturan rotate untuk jumlah arsip; skrip di pelajaran ini melakukan hal yang sama dengan mv.

rm -f app.log.3
for i in 2 1; do
  if [ -f app.log.$i ]; then mv app.log.$i app.log.$((i+1)); fi
done
mv app.log app.log.1
touch app.log

Urutannya dari nomor terbesar ke terkecil. Bila dimulai dari kecil, mv app.log.1 app.log.2 menimpa isi app.log.2 sebelum isi itu sempat digeser ke app.log.3, dan satu hari log hilang tanpa pesan apa pun.

Cadangan bertanggal memakai date +%F, yang menghasilkan bentuk 2026-09-22. Bentuk itu diurutkan abjad sama dengan diurutkan waktu, jadi daftar folder cadangan/* dari pola glob sudah tersusun dari yang tertua. Untuk menyisipkan tanggal ke nama berkas, gabungkan ekspansi parameter: ${f##*/} mengambil nama tanpa folder, lalu ${b%.csv} membuang akhirannya.

TGL=$(date +%F)
for f in data/*.csv; do
  b=${f##*/}
  cp "$f" "arsip/${b%.csv}-$TGL.csv"
done

Batas simpan menjaga disk tidak penuh: simpan array DAFTAR=(cadangan/*), hitung N=${#DAFTAR[@]}, lalu hapus elemen berindeks 0 sampai N-4 bila yang disimpan tiga terbaru.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi