Overview
After completing OpenWRT Home Server - Installation and Configuration we want to make sure that we can backup and restore our OpenWRT router with ease. It will allow us to continue through the series with a bit of confidence, giving us more freedom to experiment.
This how to is useful to anyone wanting to backup an OpenWRT router, even if you are not following along with this series.
Details
The following should be backed up on all systems:
Installed packages
Here we back up a list of installed packages. The credit goes to Upgrade OpenWRT and reinstalling packages for the idea on how to handle this.
Backing up list of installed packages
Make sure to run this before baking up the configuration files, covered in a section below.
root@homesrv:~# opkg list-installed > /etc/config/installed.packages
Restoring installed packages
The router will need access to the Internet before being able to install packages. Assuming that there is a path out:
root@homesrv:~# opkg update
root@homesrv:~# opkg install \
$(cut -f 1 -d ' ' < /etc/config/installed.packages)
Configuration files
OpenWRT uses sysupgrade
to backup configuration files. sysupgrade is
used for both LuCI web admin and command line backups, so it is important
to configure it correctly.
WARNING: The OpenWRT sysupgrade
backup system has to be configured
correctly or else files will be missed during backup. Throughout this series,
I will do my best to point out when sysupgrade
needed to be informed of a new
configuration file to backup. In the end it is your responsibility to keep
sysupgrade
configured correctly.
Configuring sysupgrade
sysupgrade
determines which configuration files to backup by:
- Using a list of modified configuration files provided by opkg, this
list can be viewed by using the
opkg list-changed-conffiles
command. - Reading the list of file names in
/etc/sysupgrade.conf
, an example can be found here: sysupgrade.conf.
On the router, comb through the output of opkg list-changed-conffiles
and
check for missing entries:
$ ssh root@192.168.1.1
root@homesrv:~# opkg list-changed-conffiles | sort -u
If you completed OpenWRT Home Server - Installation and Configuration, you
might notice that /etc/dropbear/authorized_keys
is missing.
/etc/config/installed.packages
from above should be added as well. Update
the sysupgrade
configuration with vi /etc/sysupgrade.conf
and add it. The
contents of /etc/sysupgrade.conf
should look something like:
## This file contains files and directories that should
## be preserved during an upgrade.
# /etc/example.conf
# /etc/openvpn/
/etc/sysupgrade.conf
/etc/config/installed.packages
OpenWRT comes with a minimalistic vi
application that is part of
BusyBox.
Backing up configuration files
Create the backup in the /tmp/
directory. /tmp/
is actually an in memory
file system (RAM). Backing up to anywhere else would likely fill up the
already limited space on the router, as well as increase the wear on the flash.
root@homesrv:~# sysupgrade -v --create-backup \
/tmp/backup-$(cat /proc/sys/kernel/hostname)-$(date +%F).tgz
Next you should confirm that backup exists and contains the expected files:
root@homesrv:~# ls -l /tmp/backup-*-$(date +%F).tgz
root@homesrv:~# tar -zvtf /tmp/backup-*-$(date +%F).tgz
Copy the backup file off of the router and put it somewhere safe, scp
to your
workstation might be a good option. The remove the backup file once it has
been copied off of the router to free up space:
root@homesrv:~# rm /tmp/backup-*-$(date +%F).tgz
Restoring configuration files
scp
the backup file into the /tmp/
directory on the router, then:
root@OpenWrt~# sysupgrade -v --restore-backup /tmp/backup-*.tgz
root@OpenWrt~# reboot
Workflows
Some general workflows on how to backup and restore a router with OpenWRT.
Backup workflow
- Backup list of installed packages.
- Backup configuration files.
- Copy the backup file off of the router and put it in a safe place.
- Delete the backup file from
/tmp/
on the router.
Restore workflow
For a simple, configuration only restore:
- Copy the backup file to the
/tmp/
director on the router. - Restore installed packages.
- Reboot the router.
If you lost everything, configuration files and installed packages (this happens after a factory reset):
- First get the router connected to the Internet again. You can untar the backup file on your workstation and pull the information you need from there.
- Once connected to the Internet, copy
installed.packages
to/tmp/
on the router. The Restore installed packages. - Copy the backup file to the
/tmp/
director on the router. - Restore configuration files.
- Reboot the router.
Backup and restore through the web interface
And, of course, backups and restores can be performed through the administrative web interface. The page can be found through the System -> Backup / Flash Firmware menu.
Backups through the web admin site do not include a list of installed packages,
that will still have to be done manually. /etc/sysupgrade.conf
still has to
be updates to pick up missing files, as described in Configuring
sysupgrade.
Advanced backup and restore
For those that want to do a full backup of the flash, read OpenWRT Generic Backup.
Further reading:
- OpenWrt documentation:
- Upgrade OpenWRT and reinstalling packages
- BusyBox - BusyBox homepage.