Backing up Mikrotik configuration is easy. Just save the backup and copy it to your machine.
ssh router.local '/export file=mybackup' $ scp router.local:/mybackup.rsc /backup/mybackup.rsc
This results in a binary file you can directly load upon restore. And that’s ok for the backup. But what if you want to track changes over time? Binary file won’t do. Welcome text export.
Fortunately, we can also get /export
to output the data in textual format. Since this data will include things like dates and similar things that change with every execution, we use awk
and sed
to remove those.
ssh router.local '/export' \
| tr -d '\r' \
| awk '{sub(/^ +/, "", $0); if (sub(/\\$/,"")) printf "%s", $0; else print $0}' \
| sed "s/^# .* by RouterOS/# RouterOS/" \
| sed "/^# managed by CAPsMAN$/d" \
| sed "/^# channel: .*, CAPsMAN forwarding$/d" \
| sed "/^# $/d" \
> /backup/mybackup.txt
The result is reasonably clean file that can be committed to Git
or any version control software of your choice.