Datensicherung
Die hier gewählte Backup-Lösung basiert im Kern auf rsync --link-dest
- erzeugt Backups mit Zeitstempel spezifisch (und ausschließlich) für das Verzeichnis
~/b.
rsync
TBD (siehe auch Chat)Das auf dieser Grundlage erzeugtes Skript: ~/.local/bin/rsbck (rsync backup)
rsbckDas 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_ROOTDie 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_PATHSichern 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/bAus 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'