OpenWRT backup tool.
obackupper backs up and restores the writable OpenWrt overlay layer: /overlay/upper.
- Full archive of
/overlay/upper - Installed package list
- Router and OpenWrt metadata
- SHA-256 checksums for strict verification
Backups are stored as:
BACKUP_ROOT/hostname/OpenWrt_version_timestamp
Example:
/mnt/sda1/obackupper_backups/hEx/OpenWrt_24.10.5_r29087-d9c5716d1d_2026-07-10_15-47-39
Default retention is 20 backups per hostname.
- Read
/overlay/upper - Create
overlay-upper.tar.gz - Write package list and metadata
- Verify archive and checksums
- Save backup into the hostname folder
All selection screens use the same keyboard controls:
- Up/Down arrows move selection
- Enter selects
qcancels
There is no numbered prompt for list, restore without arguments, selected-backup actions, or place.
obackupper restore without arguments is safe: it opens the same selector as obackupper list and does not immediately restore the latest backup.
- Select a hostname folder
- Select a concrete backup folder
- Select restore, delete, or cancel
- For restore, verify
sha256sums.txt - Show source router info and destructive restore warning
- Require explicit confirmation
- Clear the target directory
- Extract the saved overlay
- Request reboot if target is
/overlay/upper
Direct restore is still available:
obackupper restore /mnt/sda1/obackupper_backups/hEx/OpenWrt_24.10.5_r29087-d9c5716d1d_2026-07-10_15-47-39obackupper place opens an interactive storage selector instead of asking for a path.
It shows:
- Existing writable
obackupper_backupsroots, including the current configured root when present - Writable storage locations where
obackupper_backupscan be created automatically
After selection, obackupper creates the backup root if needed, verifies it is writable, and writes /etc/openwrt_overlay_backupper.conf.
- Root access
- OpenWrt with
opkgorapk tar,sha256sum,mount,awk,sed,grep,sortstty,dd, andcmpfor interactive arrow-key menuspigzrecommended- One downloader:
wget,uclient-fetch, orcurl
opkg update
opkg install pigz wget-ssl coreutils-sttyapk update
apk add pigz wget coreutils-sttyUse --gzip if pigz is not available.
Download the script anywhere, make it executable, and run it.
On first run it:
- checks GitHub for updates
- checks required prerequisites
- installs itself to
/usr/bin/obackupper.sh - creates
/usr/bin/obackupper - writes the default backup config if it does not exist
For an installed copy, GitHub is checked before every command. If a newer
version is available, obackupper installs it and restarts the same command.
obackupper help shows the GitHub main commit and commit date checked at
startup.
cd /root
wget -O obackupper.sh https://raw.githubusercontent.com/BlackF1re/obackupper/main/obackupper.sh
chmod +x obackupper.sh
./obackupper.shcd /root
uclient-fetch -O obackupper.sh https://raw.githubusercontent.com/BlackF1re/obackupper/main/obackupper.sh
chmod +x obackupper.sh
./obackupper.shcd /root
curl -L -o obackupper.sh https://raw.githubusercontent.com/BlackF1re/obackupper/main/obackupper.sh
chmod +x obackupper.sh
./obackupper.shobackupper backup
obackupper list
obackupper restore
obackupper restore BACKUP_DIR [TARGET]
obackupper place
obackupper -removelistfirst shows hostname groups fromBACKUP_ROOT/<hostname>, with the current router hostname pinned to the top and shown in green.- After selecting a hostname,
listshows the concrete backup folders stored under that hostname. restorewithout arguments opens the selector and never auto-restores the latest backup.placeshows existing backup roots and writable disks/directories; it does not start with a manual path prompt.- Restore is destructive and requires explicit confirmation.
- Backups on the same device still protect against bad changes, but not storage failure.
- Installed copies check GitHub for updates at most once per hour by default.
BSD 3-Clause. See LICENSE.