Mikrotik Backup Script

This is a Linux script for creating and backing up backups on Mikroitk routers.

Features

  • Creates the backups automatically, no need to manually create a backup on the Mikrotik
  • Uses SSH and SCP for encrypted communication between the router and the server
  • Runs on linux
  • Easy to use command line interface
  • Can back up single or multiple routers

Future Features

These are features I am planning on adding to the script in the future

  • Ability to compare backups and remove duplicates
  • Make the script smarter so it can detect a backup on a router and leave it instead of deleting it
  • Add better logging
  • Add the functionality to upload the backups to an online service like DropBox, or OneDrive automatically
  • Add alert mechanism to alert you if a backup failed or router is unreachable

Current Bugs or limitations

  • Deletes all backups off of the router, so if you manually created a backup it will delete it without asking
  • To stop backing up a router, you’ll need to manually delete the IP address out of the IP database i.e(ip.lst file.)
  • It does not currently have the ability to delete backups

 

Requirements

  1. Linux box to run the script from and to store the backups.  You can run it from a laptop or VirtualBox.
  2. You’ll need the following programs for this script to work(fping, sshpass)
  3. The Linux box need to be able to ping the routers, if it can’t the script will fail

Installing

Download program

wget www.incredigeek.com/home/downloads/mtbackup/mtbackup.sh
chmod +x mtbackup.sh

Now open up the script and edit the variables at the top for your username, password, and where you want the backups.

 nano mtbackup.sh

When you have finished editing the variables, hit CTRL+x, and then “y” and then “enter” to save the file.

If you want to setup the script to backup on a regular basis then setup the script to run in cron.

Run “crontab -e” and add the following line

10 1 * * 1 cd /root/mtbackup-1.0/ & sh mtbackup -b

Hit CTRL+x, and then “y” and then “enter” to save the file.

Adding routers to backup

Adding routers is really easy.  All you have to do is run the script with the -a option and then the ip address and the script will check if it can reach the IP and then add it to the IP Database i.e.(ip.lst file that contains all the routers ip addresses)
./mtbackup.sh -a 192.168.88.1

Example:

[root@localhost mtbackup-1.0]# ./mtbackup.sh -a 192.168.88.1
#################################################################

This is a Mikrotik Backup Utility.  Still being updated and worked on!!!

#################################################################

Adding 192.168.88.1 to the ip DB
Added 192.168.88.1 to ipDB
[root@localhost mtbackup-1.0]#

Backing up all routers

You can manually backup all the routers by running the script with just the “-b” option.  It’ll read every IP in the IP database and create a backup for each one and put it in the backup folder with is normally “./backups”, you can change it in the variables portion of the script.

./mtbackup.sh -b

Other examples

List routers in the IP Database

 [root@localhost mtbackup-1.0]# ./mtbackup.sh -L
#################################################################
This is a Mikrotik Backup Utility. Still being updated and worked on!!!
#################################################################
Listing Hosts...
192.168.88.1
10.200.1.1
172.20.1.1
33.11.2.22
[root@localhost mtbackup-1.0]#

Backup Single router

[root@localhost mtbackup-1.0]# ./mtbackup.sh -B 192.168.88.1
#################################################################

This is the Mikrotik Backup Utility. Currently under construction!!!

#################################################################

Starting to do backup on 10.9.0.1

Configuration backup saved
[root@localhost mtbackup-1.0]#

Other commands

[root@localhost mtbackup-1.0]# ./mtbackup.sh -h
#################################################################

This is the Mikrotik Backup Utility.  Still being updated and worked on!!!

#################################################################

Usage
./mtbackup.sh [OPTIONS]
./mtbackup.sh -b 192.168.88.1

-l      List backups
-L      List Hosts
-b      Backup all hosts in the IP database
-B {ip} Backup Single Host, Specife IP
-a {ip} Add ip to IP database
-v      Version

[root@localhost mtbackup-1.0]#

How to export/import a XenServer VM form the Command Line

We can list the VM’s by running

xe vm-list

You can export a VM using either the name of the VM or by using the uuid.  The above command list both so you can use which ever one you want.

You will also need to shutdown the VM your going to export.

xe vm-shutdown vm=ubuntu

 

Export by Name
The name of the VM is”ubuntu”.

xe vm-export vm=ubuntu filename=/backup/ubuntu.xva

Export using uuid

xe vm-export uuid=b24dcd65-5e12-4576-2f39-46ecab9362ab filename=/backup/ubuntu.xva

 

Importing VM

xe vm-import vm=centos5 filename=/backup/ubuntu.xva

Create an Image of a SD Card

The following command works on both OS X and Linux.  It creates an image from the SD card called raspi.img which you can later use to clone to another SD Card or just keep as a backup.  It is exceptionally useful for backing up a Raspberry Pi.

Replace “mmcblk0” with your SD cards name.  Take a look at this post if you need help finding the name.

sudo dd if=/dev/mmcblk0 of=~/raspi.img

How to Backup a WordPress Site from the Command Line

There are 2 things we need to do when we backup a WordPress site.

  1. Backup the WordPress files
  2. Backup The WordPress database

Backup the WordPress files

We can backup the files with tar by running the following command.  Replace (/Path/to/wpdir) with the actual path.

#  tar -zcvf wp-backup.tgz /Path/to/wpdir/

This can take awhile depending on how big your site is.

Backup the Database

The following command will backup the WordPress database into a gziped sql file.

mysqldump -u username -p[root_password] database_name > wp-database.sql && gzip wp-database.sql

You can find the MySQL Database, username, and password in the wp-config.php file in the wordpress directory

You should now have two files, wp-backup.tgz and wp-database.sql.qz, you’ll need both of these to restore the backup.