Datensicherung

Die hier gewählte Backup-Lösung basiert im Kern auf rsync --link-dest

rsync

TBD (siehe auch Chat)

Das auf dieser Grundlage erzeugtes Skript: ~/.local/bin/rsbck (rsync backup)

rsbck

Das Skript:

#!/bin/bash
# ~/.local/bin/rsbck
set -Eeuo pipefail

SOURCE="/home/dsci/b/l/"
BACKUP_ROOT="/home/dsci/backup/l/"
#DATE="$(date +%Y-%m-%dT%H-%M-%S)"
DATE="$(date +%Y-%m-%d)"
DEST="$BACKUP_ROOT/$DATE"
LATEST="$BACKUP_ROOT/latest"
RSYNC_OPTIONS=(-aHR)
RSYNC_EXCLUDES=(
    --exclude='cache/'
    --exclude='*.tmp'
    --exclude='.cache/'
)

mkdir -p "$BACKUP_ROOT"

LINK_DEST=()
if [[ -d "$LATEST" ]]; then
  LINK_DEST=(--link-dest="$LATEST")
fi

rsync \
    "${RSYNC_OPTIONS[@]}" \
    "${RSYNC_EXCLUDES[@]}" \
    "${LINK_DEST[@]}" \
    "$SOURCE" \
    "$DEST/"

ln -sfn "$DATE" "$LATEST"

echo "✓ Lokales Backup abgeschlossen: $DEST"
ls -lh $BACKUP_ROOT

Die Backups finden sich zunächst in der selben Partion, hier unter ~/backup/l/.

Ein echter Backup ensteht aber natürlich nur dann, wenn dieses Backup-Verzeichnis auf einen entfernten Server gespiegelt oder auf ein externes Medium geschrieben wird.

zusätzlich tar.gz herstellen

DATE=$(date +%F_%H-%M-%S)
# TBD: statt /tmp/backup-remote einen besseren Zielordner angeben (z.B. ein Memory-Stick)
REMOTE_PATH="/tmp/backup-remote"
echo $DATE, $REMOTE_PATH

Sichern als tar.tgz – ohne solche Ornder, die leicht wiederhergestellt werden können:

mkdir -p $REMOTE_PATH
tar --exclude='.venv' --exclude='__pycache__' -czf "$REMOTE_PATH/backup_b_$DATE.tar.gz" ~/backup/b

Aus Virtualbox im MINT Guest direkt über NAT auf den MINT Host schreiben:

tar --exclude='.venv' --exclude='__pycache__' -czf - "/home/dsci/backup/b" | ssh USER@10.0.2.2 'cat > /tmp/backup_b_$DATE.tar.gz'