🌍

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