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

# 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"

# 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 :-)


At home there are usually a lot of devices using the internet. Unwanted advertisments Unerw├╝nschte Werbung kann man mit diversen Browserplugins in einem can be suppressed with browser plugins but this requires to install a pugin on every device - multiple tablets, multiple smartphones, multiple laptops and multiple desktops.

Everybody running a server on a Raspberry with an open internet connection should protect against unauthorized access. There are various ways to protect. An additional protection is to restrict access to the Raspberry to specific IP ranges. The easiest way to do this is by using geoip and iptables and allow access from IPs from your country only. Actually this makes sense only if the server is used by you only and is no open server for everybody (owncloud, seafile, ...).

Just execute following steps in roder to install geoip on Raspbian Stretch:

1) Install the kernel header files

sudo apt-get install raspberrypi-kernel-headers

2) Create a file /usr/local/bin/installGeoIP.sh and insert following code

set -euo pipefail

set +e
if ! dpkg -l xtables-addons-common >/dev/null ; then
        apt install xtables-addons-common
if ! dpkg -l libtext-csv-xs-perl >/dev/null ; then
        apt install libtext-csv-xs-perl
set -e

if [ ! -d /usr/share/xt_geoip ]; then
        mkdir /usr/share/xt_geoip

geotmpdir=$(mktemp -d)
csv_files="${geotmpdir}/GeoIPCountryWhois.csv ${geotmpdir}/GeoIPv6.csv"
cd "${geotmpdir}"
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip ${csv_files}
cd "${OLDPWD}"
rm -r "${geotmpdir}"
exit 0

3) Make this file executable and invoke it

chmod +x /usr/local/bin/installGeoIP.sh


4) Add iptables rules to accept IPs from US and Germany


iptables -A INPUT -m geoip --src-cc DE,US -m conntrack --ctstate NEW -j ACCEPT



Maxmind geoip

GeoIP based filtering with iptables

Netfilter: geoip howto

Blocklist ipsets

How to install kernel headers

Linxu headers rpi from mhieenka
Solved: iptables & geoip

rpi-source wiki

Every Raspberry beginner starts with a NOOBS image, which is listed by raspberry.org first as the suggested image to use (See https://www.raspberrypi.org/downloads/)

NOOBS allows to start different operating systems which is useful when you want to evaluate the different alternatives to decide which is the right one for you. Unfortunately most of the people continue to use NOOBS when they have decided which OS to use. But that's the point to setup a new image with only one operating system.


NOOBS is no normal Linux system and has various quirks which causes a lot of headache sooner or later. If you ask for help if you have issues with NOOBS there is low probability you will get any responses. All experienced Raspberry users don't use NOOBS. As soon as you have decided which OS to use setup a new image and don't use NOOBS any more. This will make your life much easier when using your Raspberry.

raspiBackup supports NOOBS images in partitionorientierted backupmode . For production like systems it's suggested to create a single operating system image and backup this with raspiBackup in normal backup mode. the normal backup mode is also able to save an external root partition.

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.

I just wanted to get nfs up and running on my Raspberry Jessie and got the uggly error message. Root cause is the nfs-server starts before rpcbind. If you restart the nfs-server after boot it will work. But will not work again after reboot. Following page describes how to get this fixed.

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.

There are various reasons (performance, space, ..) why you want to move your root partition from your Raspberry sd card to an external device like an USB disk or USB stick. You can do it manually or use a small script to achieve this.

If you want to clone a SD image which was created on a Raspberry Pi and use the cloned SD on another Raspberry you have to execute one important additional step. Otherwise the Raspberry starting with the cloned SD card will not get a network connection.