vom 13. 02. 2021
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).
... because software matters