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.logUrutannya 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"
doneBatas 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.