Inkrementelles Backup mit rsync

Kategorie: SW linux tools

vom 13. 02. 2021



Kein Backup -> Kein Mitleid


Hier nun ein kleines Skript, das in ähnlicher Form öfter im Netz zu finden ist. Da es im wesentlich ja nur rsync mit der Option --link-dest aufruft, ist das eigentlich auch kein Wunder.

Die Option --link-dest sorgt dafür, daß wir ein inkrementelles Backup bekommen. Es legt für unveränderte Dateien hard-links an.

Für jedes Backup wird ein eigenes Verzeichnis angelegt. Nach dem Kopieren wird ein Link „latest“ gesetzt, der auf das Verzeichnis zeigt. Beim nächsten Backuplauf ist dieses Verzeichnis dann der „--link-dest“. Erst nach dem Backup wird der Link umgesetzt auf das neu erzeugte Verzeichnis.

Das Skript wird auf dem Rechner gestartet, auf dem das Zielverzeichnis liegt. (Andernfalls die letzten beiden Zeilen ändern und die Befehle remote -z.B. mittels ssh- ausführen.)


Ich habe das Skript „rsync_backup.sh" genannt. Auf dem Rechner, der die Backups aufnimmt, starte ich das Skript z.B. so:

rsync_backup.sh isis:VM-exports /extra/backups/VBox_exports 'g*'

Damit kann ich mir die VM-Bilder, deren Namen nicht mit „g“ beginnen, vom Rechner isis abholen.



#!/bin/bash

# incremental backups using rsync
set -e

if [ "$#" -lt 2 ]; then
  echo usage: $(basename $BASH_SOURCE) [remote_host:]source_dir target_dir_must_be_local \[exclude_pattern\]
  exit 1
fi
SOURCE_DIR="$1"
BACKUP_DIR="$2"
if [ "$#" -ge 3 ]; then
  EXCLUDE_PATTERN="$3"
  exclude="--exclude"
else
  exclude=""
  EXCLUDE_PATTERN=""
fi

BACKUP_PATH="${BACKUP_DIR}/$(date '+%Y-%m-%d_%H:%M:%S')"
link2latest="${BACKUP_DIR}/latest"

mkdir -p "${BACKUP_DIR}"
rsync -av --delete $exclude $EXCLUDE_PATTERN  --link-dest "${link2latest}" "${SOURCE_DIR}/" "${BACKUP_PATH}"

rm -f "${link2latest}"
ln -s "${BACKUP_PATH}" "${link2latest}"


Ebenfalls erwähnenswert ist die rsync-Option --backup (mit --suffix und --backup-dir).


Senden Sie uns Ihren Kommentar

... because software matters