raspiBackup is developed primarily on a Linux desktop. But finally raspiBackup is tested on a real Raspberry. There exist various raspibian images on disk which are restrored with raspiBackup on a SD card and/or USB stick and then the new or changed functionality of raspiBackup ist tested manually.

At some point in time a new version of raspiBackup has to be published. Initially I tested a lot of different variants by hand which takes a long time and reduces the number of my SD cards.  Therefore I set up a Raspberry simulation environment on Linux. Now every new raspiBackup version is regression tested in the simulation environment. That's much faster and I don't have to buy new SD cards all the time any more.

On the following picture you can see a 3B Raspberry I use for tests together with various SD cards of different size and USB sticks.

 

There exist three types of messages:

1) Informational  - Messagenumber ends with I

2) Warning - Messagenumber ends with W

3) Error - Messagenumber ends with E

Most errormessages of raspiBackup give detailed information about the root cause. Sometimes it's required to get additional information in order to get rid of them. raspiBackup has abou 200 errormessages and it's soo boring to explain all of them here. If you miss a message just add list the message text in a comment at the end of the page and the message with mor detailed explanations will be addded on this page. That way the most common raspiBackup messages will show up on this page.

Every new version of raspiBackup is regression tested before it's published. There are a lot of options and hard- and softwareenvironments possible which cannot be regression tested - unfortunately. Following page describes how the regressiontest is executed and which tests are executed.

raspiBackup has some helper scrips which are available on github for download.

1) raspiBackupWrapper.sh : Helps to do additional stuff before and after invocation of raspiBackup. The backuppartition is mounted already before starting raspiBackup and unmounted if it wasn't mounted when starting. Some basic bash scripting knowlege is required to customize the script for individual needs.

2) raspiBackupNfsWrapper.sh: Check if a NFS server is online and start raspiBackup. Don't start raspiBackup if the server is offline. This script can be used out of the box. Some constants regarding the nfs server have to be customized.

3) raspiBackupRestore2Image.sh: This script allows to convert a tar or rsync backup which was created in normal backup mode into a dd image. pishrink is used to make sure the image is as small as possible. kmbach suggested to create this script. No customization of the script required.

4) raspiImageMail.sh: THis script was created by raspiBackup user kmbach. He wanted to get an eMail at the end of raspiBackupRestore2Image.sh. eMail configuration is extracted from raspiBackup configuration file.

raspiBackup creates a backup which contains all required information to restore a backup manually. User Micha wanted to restore a backup manually and kindly documented the steps in detail in a comment in German. I transleted his comments into English:

# manuel Restore:
--------------------
# Manuel creation of partitions
sfdisk /dev/sdb < /backup/pi/pi-rsync-backup-20170812-134552/pi-backup.sfdisk

# MBR restore:
dd of=/dev/sdb if=/backup/pi/pi-rsync-backup-20170812-134552/pi-backup.mbr count=1
sync

# Inform the operating system about partition table changes:
partprobe /dev/sdb

# format and mount Root-Partition
mkfs -t vfat /dev/sdb1
mkfs -t vfat /dev/sdb6
mkfs.ext4 /dev/sdb5
mkfs.ext4 /dev/sdb7

mkdir -p /mnt/sdb1
mkdir -p /mnt/sdb5
mkdir -p /mnt/sdb6
mkdir -p /mnt/sdb7

mount /dev/sdb1 /mnt/sdb1
mount /dev/sdb5 /mnt/sdb5
mount /dev/sdb6 /mnt/sdb6
mount /dev/sdb7 /mnt/sdb7

# udevadm settle waits for udevd to process the device creation events for all hardware devices, thus ensuring that any device nodes have been created successfully before proceeding:
udevadm settle

# rsync-Restore:
rsync --numeric-ids -aAHXv --exclude=/pi-backup.* /backup/pi/pi-rsync-backup-20170812-134552/mmcblk0p1/ /mnt/sdb1
rsync --numeric-ids -aAHXv --exclude=/pi-backup.* /backup/pi/pi-rsync-backup-20170812-134552/mmcblk0p5/ /mnt/sdb5
rsync --numeric-ids -aAHXv --exclude=/pi-backup.* /backup/pi/pi-rsync-backup-20170812-134552/mmcblk0p6/ /mnt/sdb6
rsync --numeric-ids -aAHXv --exclude=/pi-backup.* /backup/pi/pi-rsync-backup-20170812-134552/mmcblk0p7/ /mnt/sdb7

# Fake-HW-Clock patch:
# logItem "Updating hw clock"
echo $(date -u +"%Y-%m-%d %T") > /mnt/sdb7/etc/fake-hwclock.data

# logItem "Syncing filesystems"
sync

# umount all recovery-folders:
umount /mnt/sdb*

# eject SD-card
eject /dev/sdb

# cleanup mounts
rmdir /mnt/sdb*

# Plugin SD-card in Pi and test
# Enjoy :-)

 

The purpose of this page is to explain step by step how to install and configure raspiBackup in 5 minutes to create a backup of your Raspberry very quick. This page describes for different platforms (Linux, Mac or Windows) how to restore the backup. After testing the backup and restore the next step should be to check which services have to be stopped before the backup starts. Finally cron should be configured to start raspiBackup on a regular base. Later on when you have some spare time read this page carefully to check which additional features of raspiBackup are useful for you and update the raspiBackup configuration accordingly. In any case it's strongly recommended to read the FAQ.

Following enviroment variations exist for raspiBackup in next release 0.6.2 which supports Raspi3. For all new features available in this beta see this page. Resource constraints limited the number of variations tested. Please add a comment when you successfully tested a variation which is not marked as tested. If you don't know for sure whether your scenario was already covered in the table don't hesitate to ask. We'll figure this out.

Frequent asked questions about raspiBackup. Every new user of raspiBackup should read all questions and answers.

So many people from the community helped to improve raspiBackup with their comments, improvement requests and beta- and fix test support and execution. It's time to mention them now.  I unfortunately don't remember everybody - sorry about this.

It's possible to add custom code which is executed before and after the backup process via two script extensions. They are useful if modification of the backup script is required to extent the script capabilities and will be lost and thus have to be merged again and again every time when raspiBackup will be updated.

Three sample plugins are available and can be used as templates for new plugins. The first three report the CPU temperature, memory utilization and backup partition usage pre and post a backup run. The last one is called at the end of the backup and can be used to execute different actions depending on the success or failure of raspiBackup.

If you create your own plugin please share it with the community and announce it's availability in a comment. If there is any function missing for the plugin please write a comment and I'll check whether it's possible to provide the missing function.

Following page lists all new features and bugfixes per raspiBackup release.