gumbelaneo schrieb:
Hallo, kann mir vielleicht jemand genau erklären, was folgendes script genau macht ?
#! /bin/bash
quelle=/home
ziel=/backup
heute=$(date +%Y-%m-%d)
rsync -avR --delete "${quelle}" "${ziel}${heute}/" --link-dest="${ziel}last/"
ln -nsf "${ziel}${heute}" "${ziel}last"
exit 0
Ich bringe mir grad alles selbst bei und würde gerne genau wissen, was da passiert.
Na dann schau dir doch mal Material zu Bash-Skripts (z.B. Shell/Bash-Skripting-Guide für Anfänger, http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html und http://tldp.org/LDP/abs/html/) und außerdem die Manpage zu rsync,
date und ln auf deinem System an.
Kurzfassung: Das Skript definiert drei Variablen, kopiert rekursiv und unter Beibehaltung der Dateiattribute noch nicht im Ziel vorhandene Dateien ins angegebene Ziel-Verzeichnis und löscht sie, wenn sie in der Quelle nicht mehr vorhanden sind, aber dafür noch im Ziel. Ist eine Datei in der vorangegangenen Sicherung bereits enthalten wird für sie im neuen Backup ein (Hard)link angelegt. Zum Schluss wird ein Link angepasst, so dass er auf die aktuelle statt auf die vorherige Sicherung zeigt und das Skript mit dem Exit-Status 0 beendet.
Wie sich rsync dabei genau verhält, hängt auch davon ab welche Version von rsync zum Einsatz kommt und ob das Ziel zu Beginn der Aktion leer ist - ab rsync 3.1.1 wurde z.B. ein Bug im Zusammenhang mit --link-dest gefixt, der verhindert hat, dass Hardlinks für bereits im Ziel existierende Dateien erzeugt werden (vgl.
https://unix.stackexchange.com/questions/193308/how-to-get-rsync-to-link-identical-files-with-link-dest-option-if-an-old-file)