Skip to content

kmbach/raspiBackup

 
 

Repository files navigation

raspiBackup - Backup and restore your running Raspberries

  • Create an unattended full or incremental system backup with no shutdown of the system or any other manual intervention just by starting raspiBackup using cron.
  • Restore any of the created backups.
  • Important services can be stopped before starting the backup and are started again when the backup finished.
  • Menu driven installer installs raspiBackup and configures all major options to get raspiBackup up and running in 5 minutes
  • Any device mountable on Linux can be used as backup space (local USB disk, remote nfs drive, remote samba share, remote ssh server using sshfs, remote ftp server using curlftpfs, webdav drive using davfs, ...).
  • Standard Linux backup tools dd, tar and rsync can be used to create the backup.
  • dd and tar are full backups. rsync uses hardlinks for incremental backups
  • Restore a SD card image backup to SSD or USB disk and migrate to use USB boot mode
  • Status of backup run can be sent via eMail or to Telegram
  • Apply a smart recycle backup strategy (save backups of last 7 days, last 4 weeks, last 12 months and last n years) - also known as grandfather, father and son backup rotation principle
  • Extensionpoints allow to execute any additional logic at various steps in the backup process
  • Default language for messages is English. Following languages are supported native:
    • German
    • Finnish
    • Chinese
    • French
  • Extensive logging helps to answer and fix github issues create by raspiBackup users
  • Much more features ... (See doc below)

Documentation

English

German

French

This README was translated into French. Credits to mgrafr for his translation work.

Installer

The installer uses menus, checklists and radiolists similar to raspi-config and helps to install and configure major options of raspiBackup and in 5 minutes the first backup can be created.

Screenshot1 Screenshot2 Screenshot3

Installer demo

Demo

Installation is started with following command:

curl -s https://raw.githubusercontent.com/framps/raspiBackup/master/installation/install.sh | sudo bash

Donations

raspiBackup is maintained and supported by just me - framp. I'd appreciate donations if you find raspiBackup useful. For details how to donate see here

Feature requests

Anybody is welcome to create feature requests in github. They are either immediately scheduled for the next release or moved into the backog. The backlog will be reviewed every time a new release is planned and some issues are picked up and will be implemented in the next release. If you find some features useful just add a comment to the issue with 👍. This helps to prioritize the issues.

Nitty gritty details

Social media

  • Youtube - Videos in English and German
  • Twitter - News and announcements - English only
  • Facebook - News, discussions, announcements and misc background information in English and German

Miscellaneous sample scripts (Code)

  • Sample wrapper scripts to add any activities before and after backup (Code)

  • Sample wrapper script which checks whether a nfsserver is online, mounts one exported directory and invokes raspiBackup. If the nfsserver is not online no backup is started. (Code)

  • Sample script which restores an existing tar or rsync backup created by raspiBackup into an image file and then shrinks the image with pishrink. Result is the smallest possible dd image backup. When this image is restored via dd or windisk32imager it's expanding the root partition to the maximum possible size. (Code)

Sample extensions (Code)

  • Sample eMail extension
  • Sample pre/post extension which reports the memory usage before and after backup
  • Sample pre/post extension which reports the CPU temperature before and after backup
  • Sample pre/post extension which reports the disk usage on the backup partition before and after backup and the absolute and relative change
  • Sample pre/post extension which initiates different actions depending on the return code of raspiBackup
  • Sample ready extension which copies /etc/fstab into the backup directory

Systemd

Instead of cron systemd can be used to start raspiBackup. See here (thx Hofei) for details.

REST API Server proof of concept

Allows to start raspiBackup from a remote system or any web UI.

  1. Download executable from RESTAPI directory
  2. Create a file /usr/local/etc/raspiBackup.auth and define access credentials for the API. For every user create a line userid:password
  3. Set file attributes for /usr/local/etc/raspiBackup.auth to 600
  4. Start the RESTAPI with sudo raspiBackupRESTAPIListener. Option -a can be used to define another listening port than :8080.
  5. Use curl -u userid:password -H "Content-Type: application/json" -X POST -d '{"target":"/backup","type":"tar", "keep": 3}' http://<raspiHost>:8080/v0.1/backup to kick off a backup.

About

Backup and restore your running Raspberry

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 96.3%
  • Go 2.7%
  • Other 1.0%