#!/bin/bash # https://serverfault.com/questions/417932/rsync-for-backup-considered-dangerous # Von Martin (unregistered) # # when saving this as "rsync-history" call it with arguments # sh rsync-history user@host-to-be-backed-up:/directory-on-host/ where-to-save-the-backup/ source=$1 target_fileprefix="$2""$source" #keep N generations bigger=100 rm -rf "$target_fileprefix""$bigger" #move 1 to 2, 2 to 3... while [ $bigger -gt 0 ] do smaller=$(($bigger-1)) mv -f "$target_fileprefix""$smaller" "$target_fileprefix""$bigger" 2>>/dev/null bigger=$(($bigger-1)) done mkdir -p "$target_fileprefix""0" rsync \ -a --whole-file --delete \ --link-dest=$target_fileprefix"1"/. $source. $target_fileprefix"0"/. ## Anmerkungen: # - Lokale Arbeitsweise ist problemlos möglich, z.B.: rsync-history ~/QUELLE/ ~/ZIEL # - Dabei ist folg. zu beachten: # a) Es müssen absolute Pfade verwendet werden (dank Tilde expandieren die Verzeichnisse zu Pfaden, die in der Wurzel beginnen) # b) Wie bei rsync üblich muss der endende Slash beim Quellpfad gesetzt werden (-> 'QUELLE/') # c) Beim ersten Start taucht die Meldung "--link-dest arg does not exist: ..." auf, was nur eine Warnung darstellt # - Die Option '--delete' ist hier offenbar unnötig, weil im Zielverzeichnis (z.B. '~/ZIEL/home/tux/QUELLE/') forlaufend neue # Unterverzeichnisse erzeugt werden, in denen die Dateien liegen.