====== rsync ====== * [[http://samba.anu.edu.au/rsync/]] * [[https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC/]] siehe auch: [[rsnapshot]] ===== Beispiele ===== ==== Syntax ==== 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/ ==== Sicherung übers Netz ==== 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 ==== lokale Sicherung auf eine gemountete Platte ==== 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 === Dateien von der Sicherung ausschließen === # 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/ === Verzeichnisse von der Sicherung ausschließen === 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/ ==== einfache Beispiele ==== 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/ ==== etwas aufwendigere Beispiele ==== # 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/ ==== wenn das Ziel keine Dateirechte unterstützt ==== # rsync --stats -CrlDWv --inplace --safe-links --delete --delete-excluded /Quelle/ /Ziel/ ==== Percona-Xtradb-Cluster-5.7 (Galera - SST) ==== # 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 ===== Grafische Benutzeroberfläche ===== => grsync