1. Home
  2. Docs
  3. MikroTik
  4. Script
  5. Script Backup Rolling atau Retention Otomatis di MikroTik

Script Backup Rolling atau Retention Otomatis di MikroTik

Untuk mengimplementasikan backup otomatis harian yang menghasilkan dua jenis file backup sekaligus binary .backup dan plain text .rsc, lalu merotasi file backup hanya 7 file backup versi terakhir (Backup Retention) yang tersimpan di internal storage. Alih-alih membiarkan router membuat ratusan file backup yang bisa memenuhi storage, kita akan membatasi sistem untuk hanya menyimpan 7 file backup versi terbaru.

Prasyarat dan Konsep Dasar

  • Dokumentasi ini dibuat menggunakan Mikrotik v7.23.2 yang sudah saya coba dan berhasil, namun kemungkinan terdapat perbedaan string code pada script jika menggunakan versi di bawahnya.
  • Membuat script yang sekali jalan menghasilkan file .backup dan .rsc.
  • Mengatur retensi backup: hanya menyimpan 7 pasang file backup terbaru di internal storage.
  • Menjadwalkan eksekusi otomatis harian dengan system scheduler.

Kapan Anda Membutuhkan Script Ini

  • ISP / WISP / RT RW NET: Router MikroTik yang melayani banyak pelanggan PPPoE, Hotspot Voucher (misal pakai mikhmon), QoS, firewall filtering yang biasanya sangat dinamis.
  • Router yang disetting banyak fitur kompleks: Konfigurasi kompleks lebih rawan error ketika diubah, sehingga backup harian memberi safety saat troubleshooting.
  • Jaringan dengan banyak teknisi yang mengakses konfigurasi mikrotik: Jika ada beberapa admin yang bisa mengubah konfigurasi, risiko “config drift” dan misconfig jadi tinggi.
  • Untuk homelab, rumah, kos, hotel, atau kantor dengan konfigurasi statis yang jarang berubah, backup mingguan atau bulanan sudah cukup, asalkan selalu dilakukan backup setiap kali akan ada perubahan signifikan.

Tehnik konfigurasi untuk meningkatkan QoL (Quality of Life) admin jaringan mikrotik daripada backup konfigurasi mikrotik manual.

Backup Otomatis Harian di MikroTik dengan Rolling/Retention

Sebelum Anda copy-paste script ini, mohon terlebih dahulu mengetahui alur/cara kerja script ini karena banyak yang harus jadi perhatian.

Penjelasan Singkat

  1. Sebelum proses backup, script mengecek sisa space di internal storage. Jika Free Space kurang dari 2MB script mengirim log error dan langsung menghentikan proses backup. Ini disarankan karena memaksa backup saat flash hampir penuh berisiko crash.
  2. Membuat file backup binary .backup dengan enkripsi opsi encryption=aes-sha256 dan password di variabel backupPassword.
  3. Menyimpan file backup dalam folder spesifik (directory /backups) sesuaikan dan pastikan path folder tersebut sudah dibuat. Kita juga bisa menyimpannya di NFS Folder, seperti pada contoh dokumentasi “Cara Mount Shared Folder Synology NAS di MikroTik v7 via NFS”, agar dapat mengurangi beban pada internal storage.
  4. Di menu Files Anda akan melihat file backup maksimal 7 pasang (bisa diubah tergantung kebutuhan) dengan penamaan identity-auto-backup-1.backup -> identity-auto-backup-7.backup untuk binary (.backup) dan identity-auto-export-1.rsc -> identity-auto-export-7.rsc untuk plain-text (.rsc). File dengan slot 1 adalah file backup paling terbaru, script akan menghapus file terakhir (ke-8) otomatis.
  5. Mengexport konfigurasi (.rsc) menggunakan /export show-sensitive, nah ini yang harus hati-hati karena perintah ini akan mengexport sekaligus password atau key yang rahasia dan bisa dilihat di Editor kayak Notepad++ atau VSCode. Parameter ini digunakan kalau sampai kita harus recovery menggunakan routerboard beda tipe/model, agar misal ada konfig username-password untuk User PPPoE, User Hotspot, User VPN tidak input lagi satu-satu.
  6. Script dieksekusi secara berkala (misal tiap hari) dengan Scheduler Mikrotik.

Membuat Scripts

  • Melalui Winbox -> buka menu System -> Scripts 
    • klik tombol [+] (Add New).
    • Isi kolom Name dengan: AutoBackupRetention
    • Copy dan paste script di bawah ini ke dalam kotak Source:
:local ident [/system identity get name];
:local max 7; # tentukan total berapa file yang dipertahankan
:local backupPrefix "auto-backup"; # Prefix nama file untuk .backup
:local exportPrefix "auto-export"; # Prefix nama file untuk .rsc
:local logPrefix "AUTO-BACKUP"; # Prefix untuk log
:local dirPath "backups/";    # (TANPA slash di awal, DENGAN slash di akhir) pastikan folder backups sudah dibuat di menu Files
:local backupPassword "PasswordAnda"; # Password File Backup
:local backupEncryption "aes-sha256";
:local minFreeKB 2048; # Ambang batas free space (KB) sebelum backup

:local date [/system clock get date];
:local time [/system clock get time];

# ---------------------------
# CEK FREE HDD SPACE
# ---------------------------
:local freeBytes [/system resource get free-hdd-space];
:local freeKB [:tonum ($freeBytes / 1024)];

:log info ("$logPrefix: start daily backup on $ident at $date $time, free space = " . $freeKB . " KB");

:if ($freeKB < $minFreeKB) do={
    :log error "$logPrefix: ABORTED - free-hdd-space too low for backup (threshold = $minFreeKB KB, current = $freeKB KB)";
    :return;
}

# ---------------------------
# ROTASI FILE .backup (binary)
# ---------------------------
:log info "$logPrefix: rotating binary backup slots";

:for i from=$max to=2 do={
    :local oldName ($dirPath . $ident . "-" . $backupPrefix . "-" . ($i - 1) . ".backup");
    :local newName ($dirPath . $ident . "-" . $backupPrefix . "-" . $i . ".backup");

    :if ([:len [/file find name=$newName]] > 0) do={
        /file remove [/file find name=$newName];
    }

    :if ([:len [/file find name=$oldName]] > 0) do={
        /file set [/file find name=$oldName] name=$newName;
    }
}

:log info "$logPrefix: creating new binary backup (slot 1, encrypted AES)";
/system backup save \
    name=($dirPath . $ident . "-" . $backupPrefix . "-1") \
    password=$backupPassword \
    encryption=$backupEncryption;

# ---------------------------
# ROTASI FILE .rsc (export)
# ---------------------------
:log info "$logPrefix: rotating export .rsc slots";

:for i from=$max to=2 do={
    :local oldName ($dirPath . $ident . "-" . $exportPrefix . "-" . ($i - 1) . ".rsc");
    :local newName ($dirPath . $ident . "-" . $exportPrefix . "-" . $i . ".rsc");

    :if ([:len [/file find name=$newName]] > 0) do={
        /file remove [/file find name=$newName];
    }

    :if ([:len [/file find name=$oldName]] > 0) do={
        /file set [/file find name=$oldName] name=$newName;
    }
}

:log info "$logPrefix: creating new config export (slot 1)";
/export file=($dirPath . $ident . "-" . $exportPrefix . "-1");

:log info "$logPrefix: daily backup completed successfully on $ident";

Membuat Scheduler

Setelah script sudah dibuat, kita perlu memberitahu RouterOS kapan script tersebut harus dijalankan. Kita akan mengatur agar backup berjalan setiap jam 02:00 dengan interval 1 hari (24 jam).

/system scheduler
add name="daily-auto-backup" \
    on-event="AutoBackupRetention" \
    start-time=02:00:00 \
    interval=1d

Frequently Asked Questions (FAQ)

Kenapa harus punya dua jenis backup (.backup dan .rsc)?

.backup aman untuk full restore di perangkat yang sama, termasuk user/password, sertifikat, dan statistik.
.rsc bisa dibaca dan diedit, cocok untuk clone konfigurasi (misalnya firewall, queue, routing) ke perangkat lain, serta untuk audit konfigurasi.

Bisa tidak file backup disimpan ke USB, MicroSD atau File Server NAS?

Bisa, Anda tinggal atur di bagian variable dirPath.

Apakah script ini saat dijalankan membebani router atau bikin hang?

Secara normal, skrip backup harian seperti yang kita buat tidak akan membebani router sampai bikin hang, selama router punya free space storage yang cukup dan CPU RAM tidak sudah “keteteran” oleh beban lain. Skrip ini hanya baca beberapa value (identity, free-hdd-space), looping kecil 7 kali untuk rename/remove file, jalankan dua command /system backup save dan /export.

Kesimpulan

Dengan satu script auto-backup-local dan satu Scheduler harian, Anda dapat menghasilkan dua file backup sekaligus: binary .backup dan plain text .rsc setiap hari. Menjaga internal storage tetap lega dengan retensi otomatis maksimal 7 file backup versi terakhir, menghapus file backup lama secara otomatis. Dengan begini Anda terlindungi dari berbagai skenario masalah konfigurasi jaringan mikrotik, baik secara hardware maupun software.

Tags ,
guest

0 Comments
Oldest
Newest Most Voted