siehe auch: rsnapshot
Das wichtigste ist, zu wissen, dass man besonders auf die Verwendung des "/" beim Quellverzeichnis achten muss!
in diesem Beispiel wird das komplette Unterverzeichnis "/daten/heute" unterhalb von "/sicherung" kopiert ⇒ "/sicherung/heute":
# rsync -a /daten/heute /sicherung
in diesem Beispiel wird dagegen nur der Inhalt von "/daten/heute" in das Verzeichnis "/sicherung" kopiert ⇒ "/sicherung":
# rsync -a /daten/heute/ /sicherung
diese beiden Kommandozeilen bewirken das gleiche:
# rsync -a /daten/heute /sicherung # rsync -a /daten/heute/ /sicherung/heute
hier wird ein Abgleich durchgeführt (Dateien werden hier immer "ganz" übertragen ⇒ -W), alle Daten die in /mnt/daten/ liegen werden nach /daten/ übertragen, wobei die neueren Dateien unter /daten/ nicht überschrieben werden (⇒ -u):
# rsync -Wau /mnt/daten/ /daten/
Mit dem Parameter "-z" wird der Datenstrom komprimiert übers Netz geschoben und mit "-e" wird die Shell auf dem entfernten Rechner ausgewählt (meistens SSH).
das komplette Verzeichnis daten vom entfernten Rechner abholen und lokal unter /var/lib/mysql/ ablegen:
# rsync -Wauve ssh 192.168.1.33:/var/lib/mysql/daten /var/lib/mysql/
lokales Verzeichnis auf entfernten Rechner sichern:
# rsync -avze ssh /daten/heute benutzer@rechner.de:/sicherung
die Webdaten des entfernten Rechners sollen auf diesen Rechner kopiert werden:
# rsync -avze ssh benutzer@rechner.de:/var/www/ /var/www
wenn die Zeichensätze auf beiden Rechnern unterschiedlich sind, dann behebt man das Problem am besten so:
# rsync --iconv=UTF-8,CP1252 -avze ssh benutzer@rechner.de:/var/www/ /var/www
Hierbei werden die Daten vom Windoofs-Rechner (CP1252) auf den lokalen Linux-Rechner (UTF-8) kopiert.
will man das Netzwerk nicht zu stark belasten, dann begrenzt man die verwendete Bandbreite mit der Option "--bwlimit":
# rsync --bwlimit=10240 -avze ssh benutzer@rechner.de:/var/www/ /var/www
Sollen dabei auch die lokalen Dateien gelöscht werden, die sich nicht auf dem entfernten Rechner befinden, dann geht das so:
# rsync -av --progress --delete /daten/heute /sicherung
# rsync [OPTIONEN] --exclude="*.cs" --exclude="*.fs" --exclude="*.vb" /daten/heute/ /sicherung/heute/
oder
# rsync [OPTIONEN] --exclude={"*.cs","*.fs","*.vb"} /daten/heute/ /sicherung/heute/
# rsync [OPTIONEN] --exclude="*.[cfv][sb]" /daten/heute/ /sicherung/heute/
Datei + Verzeichnisse ausklammern:
# rsync [OPTIONEN] --exclude={'file1.txt','dir1/*','dir2'} /daten/heute/ /sicherung/heute/
Wenn also Daten vom Verzeichnis /daten/heute/ nach /sicherung/heute/ gesichert werden sollen und dabei das Verzeichnis /daten/heute/temp/ nicht berücksichtigt werden soll, dann geht das so:
# rsync [OPTIONEN] --exclude=temp/ /home/user/daten/ /home/user/backup/
Möchte man außerdem bestimmte Dateien von der Sicherung ausnehmen, dann müsste der Befehl so aussehen:
# rsync [OPTIONEN] --exclude=temp/ --exclude=*. /daten/heute/ /sicherung/heute/
wenn beide Verzeichnisse sich auf der selben Partition befinden, kann man mit Hardlinks arbeiten, das geht schneller:
# rsync --stats --numeric-ids -CaHW --inplace --delete /daten/heute/ /sicherung/heute/
in der Praxis befinden sich die beiden Verzeichnisse fast immer auf unterschiedlichen Partitionen:
# rsync --stats --numeric-ids -aW --inplace --delete /daten/heute/ /sicherung/heute/
# rsync -CarlDHWv --progress --stats --inplace --delete --delete-excluded /Quell/Verz/ /Ziel/Verz/ # rsync -CcarlDHWv --progress --stats --inplace --delete --delete-excluded /Quell/Verz/ /Ziel/Verz/
# rsync --stats --numeric-ids --bwlimit=10240 -CaHW --inplace --delete --delete-excluded --exclude '/.gvfs' /home/ich/ root@backup:/sicherungen/ich/
# rsync --stats --numeric-ids --bwlimit=10240 -CaHW --inplace --delete --delete-excluded --exclude '*.tar.gz' --exclude '*exe' --exclude '*solaris*' --exclude '*Solaris*' --exclude '/OpenSuse*' --exclude '/fedora/' --exclude '*.rpm' --exclude '/Mail/' --exclude '*.bundle' --exclude '*.zip' /Quelle/ /Ziel/
# rsync --stats --numeric-ids --bwlimit=10240 -aW --inplace --delete --delete-excluded --filter='- *.tar.gz' --filter='- *exe' --filter='- *solaris*' --filter='- *Solaris*' --filter='- /OpenSuse*' --filter='- /fedora/' --filter='- *.rpm' --filter='- /Mail/' --filter='- *.bundle' --filter='- *.zip' --filter='+ /**/' --filter='+ *.txt' --filter='+ *.doc' --filter='+ *.od*' --filter='+ *.xls' --filter='+ *.sh' --filter='+ *.htm*' --filter='+ *.cfg' --filter='+ *.pdf' --filter='+ *conf*' --filter='+ *.exe' --filter='+ *.rss' --filter='+ *.c' --filter='+! *.*' --filter='- *' /Quelle/ /Ziel/
dieser Aufruf ist mein Favorit, hier wird das Unterverzeichnis "Verz" vom "/Quell" zum "/Ziel" synchronisiert:
# rsync -AaCgHlopStWX --stats --numeric-ids --inplace --delete --force-delete --delete-excluded --exclude /das/verz/nicht --exclude /dieses/Verz/auch/nicht --exclude /nicht/das/verz /Quell/Verz/ /Ziel/Verz/
# rsync --stats -CrlDWv --inplace --safe-links --delete --delete-excluded /Quelle/ /Ziel/
# rsync --owner --group --perms --links --specials --ignore-times --inplace --recursive --delete --quiet --whole-file --exclude */ib_logfile* /var/lib/mysql/data/./dialing/ rsync://server01.lan:4444/rsync_sst/./datenbank
⇒ grsync