Backup otomatis router mikrotik ke server memang sanggat diperlukan untuk menghindari hal yang tidak diinginkan, seperti terjadi kerusakan pada router yang dapat menyebabkan hilangnya konfigurasi yang sudah ada dirouter. Jika kita menngunakan backup otomatis router mikrotik maka kita sudah tidak perlu khawatir dengan hal tersebut karena kita bisa melakukan import file konfigurasi ke router baru tanpa harus melakukan konfigurasi ulang.

Skema router Mikrotik yang akan dibackup

Pada kasus ini ada 3 router mikrotik yang akan kita backup secara otomatis dan terjadwal ke server backup.

Backup Otomatis Rounter Mikrotik

Persiapan kebutuhan
  1. Server linux (debian/ubuntu) yang sudah terinstall web server, PHP. Server ini akan melakukan backup secara terjadwal.
  2. Server backup harus sudah terhubung ke semua mikrotik, pastikan dengan cara ping ke router mikrotik
  3. Silahkan download library PHP RouterOs-API di github.
Test library RouterOS API

Sebelum melangkah lebih jauh sebaiknya Anda melakukan test library RouterOs API di server Anda, apakah sudah bekerja dengan baik atau belum. Jika sudah bekerja dengan baik silahkan lanjutkan ke step berikutnya. Jika belum, silahkan selesaikan tahapan ini terlebih dahulu.


<?php
require('../routeros_api.class.php');
$API = new RouterosAPI();
$API->debug = true;
if ($API->connect('111.111.111.111', 'LOGIN', 'PASSWORD')) {
   $API->write('/interface/getall');
   $READ = $API->read(false);
   $ARRAY = $API->parseResponse($READ);
   print_r($ARRAY);
   $API->disconnect();
}
?>

$API->connect('111.111.111.111', 'LOGIN', 'PASSWORD' sesuaikan dengan kondisi router Anda, IP, UserLogin, dan Password. Skrip ini akan menampilkan daftar ether/interface mikrotik router Anda. Jika hasilnya sudah sesuai artinya library routerOS API sudah bekerja dengan baik di server Anda, silahkan lanjutkan ke step berikutnya.

Test PHP FTP Client

PHP FTP Client digunakan mengambil data dari router mikrotik lalu disimpan di server. Ini juga sangat penting untuk dilakukan test, apakah sudah bisa terkoneksi atau belum dan jangan lupa juga untuk mengaktifkan servis FTP dirouter mikrotik (secara default sebenarnya sudah aktif). Baca artikel PHP FTP Client

Jika step ini sudah bekerja dengan baik,silahkan lanjutkan ke step berikutnya.


Daftar Isi


Opsi-1 Menggunakan fitur export router mikrotik

Fitur export mikrotik adalah fitur yang mengumpulkan seluruh konfigurasi yang diatur secara manual kemudian minyimpannya dalam sebuah file yang berektensi .rsc. Hasil export disimpan pada disk lokal router mikrotik itu sendiri. Bayangkan jika kita harus membackup secara manual butuh berapa lama waktu untuk membackup satu-persatu router mikrotik yang kita mainten belum lagi dari faktor lain seperti lupa membackup, ketika membackup ada yang terlewatkan,dll. Mungkin tidak masalah bagi yang mainten hanya satu router saja.

Berikut ini perintah untuk melakukan export, perintah ini jika dijalankan pada terminal mikrotik maka akan membuat sebuah file backup dengan nama test_backup.rsc.

/export file="test_backup.rsc"

Perintah ini yang akan dijalankan melalui web server PHP, agar proses backup dapat dilakukan secara otomatis dan file hasil backup bisa disimpan diserver backup secara otomatis.

Skrip printah backup

Berikut adalah perintah export yang dijalankan di web server menggunakan bahasa pemograman PHP.


<?php
require('../routeros_api.class.php');
$API = new RouterosAPI();
$API->debug = true;
if ($API->connect('111.111.111.111', 'LOGIN', 'PASSWORD')) {
   $API->write('/export',false);
   $API->write('=file=nama_file.rsc', true);
   $READ = $API->read(false);
   $ARRAY = $API->parseResponse($READ);
   print_r($ARRAY);
   $API->disconnect();
}
?>

Skrip download file dari router mikrotik

Perintah ini akan melakukan download file hasil backup/export yang ada di router ke server backup.


<?php
//FTP
// define some variables
//nama file di server lokal,sebutkan juga nama folder dimana file tersebut akan disimpan
$local_file ='folder/nama_file.rsc';
//nama file di server tujuan
$server_file = 'nama_file.rsc';
//nama host/ip server FTP
$ftp_server='192.168.xx.xx';
//username Server FTP
$ftp_user_name='userFTP';
//password server FTP
$ftp_user_pass='****';

$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
		$pesan	='sukses';		    
		$text_msg="Successfully written to $local_file\n";
		$responStatus []=$r['host'].',OK';
}
else {
		$pesan	='gagal';		    
		$text_msg="There was a problem\n";
		$responStatus []=$r['host'].',GAGAL';
}
// close the connection
ftp_close($conn_id);
echo $text_msg;
?>

Skrip lengkap

Skrip diatas harus dijadikan dalam 1 file, karena 2 skrip diatas adalah 2 perintah yang saling berkaitan dan bruntun, yang dimakdud beruntun disini adalah skrip kedua akan langsung dijalankan setelah skrip pertama sukses dijalankan. Berikut skrip lengkapnya.


<?php
require('../routeros_api.class.php');

$config['host']='111.111.111.111';
$config['user']='LOGIN';
$config['password']='*****';
$config['nama_file']='nama_file.rsc';
$config['folder_local']='/var/www/html/';

$API = new RouterosAPI();
$API->debug = true;
if ($API->connect($config['host'], $config['user'], $config['password'])) {
   $API->write('/export',false);
   $API->write('=file=nama_file.rsc', true);
   $READ = $API->read(false);
   $ARRAY = $API->parseResponse($READ);
   print_r($ARRAY);
   $API->disconnect();
   
   
	//FTP
	// define some variables
	//nama file di server lokal,sebutkan juga nama folder dimana file tersebut akan disimpan
	$local_file =$config['folder_local'].$config['nama_file'];
	//nama file di server tujuan
	$server_file = $config['nama_file'];
	//nama host/ip server FTP
	$ftp_server=$config['host'];
	//username Server FTP
	$ftp_user_name=$config['user'];
	//password server FTP
	$ftp_user_pass=$config['password'];

	$conn_id = ftp_connect($ftp_server);

	// login with username and password
	$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

	// try to download $server_file and save to $local_file
	if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
			$pesan	='sukses';		    
			$text_msg="Successfully written to $local_file\n";
			$responStatus []=$r['host'].',OK';
	}
	else {
			$pesan	='gagal';		    
			$text_msg="There was a problem\n";
			$responStatus []=$r['host'].',GAGAL';
	}
	// close the connection
	ftp_close($conn_id);
	echo $text_msg;
   
}
?>

Silahkan atur value $config sesuai dengan keadaan router dan server Anda.

Untuk pengguna linux pastikan folder tempat penyimpanan file backup ($local_file), bisa write oleh www-data


Opsi-2 Menggunakan fitur backup router mikrotik

Opsi 2 yaitu Menggunakan fitur backup, pada opsi ini backup router tidak lagi terbatas pada konfigurasi yang dilakukan manual, akan tetapi backup dilakukan secara secara menyeluruh termasuk konfigurasi sistem router itu sendiri. Namun backup dengan cara ini ada kelemahan, file hasil backup tidak dapat bibaca alias di enkripsi, sehingga file backup tersebut tidak bisa di restore ke router yang berbeda versi. Sehingga backup dengan cara ini kurang tepat digunakan mengamankan konfigurasi router. Backup dengan cara ini disarankan dalam kurun waktu yang lama, tidak harus dilakukan secara rutin, sebab perubahan-perubahan yang ada dirouter cukup di backup dengan cara export konfigurasi saja.

Berikut ini perintah yang dilakukan melalui terminal mikrotik.

 /system backup save name="MikroTikBackup" dont-encrypt=yes

Untuk penggunaan dalam bahasa pemograman PHP, lakukan cara yang sama dengan export hanya tinggal mengganti perintah export menjadi backup.


Jalankan skrip backup otomatis dengan crontab

Jika skrip backup dijalankan manual sudah berkerja dengan baik, saatnya membuat penjadwalan otomatis menggunakan crontab, baca Membuat cron linux.