Rsync: Unterschied zwischen den Versionen
Yehudi (Diskussion | Beiträge) K |
(ein paar Änderungen hier und da) |
||
Zeile 2: | Zeile 2: | ||
== Einführung == | == Einführung == | ||
− | rsync ist ein Netzwerkprotokoll, welches unter GPL steht. Das Programm ist für Backups bestens geeignet | + | ''rsync'' ist ein Netzwerkprotokoll, welches unter GPL steht. Das Programm ist für Backups bestens geeignet (Kopien von A nach B), aber eine Sychronisation von den Daten findet nicht statt. Werden auf B Daten geändert, so können diese nicht abgegeglichen werden. Sind bei einem Backup Daten mit der selben Zeitangabe vorhanden, werden diese nicht überschrieben, was Zeit spart. Das Backup-Programm wurde von Entwicklern des Samba-Team, u.a. von Paul Mackeras und Andrew Tridgell, programmiert. |
Das Tool kann auch mit SSH kombiniert werden. | Das Tool kann auch mit SSH kombiniert werden. | ||
− | Im Gegensatz zu cp, welches man zum | + | Im Gegensatz zu ''cp'', welches man zum Kopieren auf der Konsolen nutzen kann, bietet rsync zahlreiche Steuerungsmöglichkeiten, die unter cp nicht vorhanden sind. cp würde z.B. bereits vorhandene Dateien erneut kopieren. |
+ | |||
== Installation == | == Installation == | ||
Zeile 30: | Zeile 31: | ||
**''-g'' behält Gruppenrechte bei | **''-g'' behält Gruppenrechte bei | ||
**''-D'' behält Gerätedateien bei; nur root | **''-D'' behält Gerätedateien bei; nur root | ||
− | *''-v'' zeigt beim Kopieren alle Schritte die gerade ausgeführt werden an | + | *''-A'' ACLs erhalten |
− | *''-n'' simuliert | + | *''-H'' Hardlinks erhalten |
− | *''-z'' komprimiert | + | *''-S'' Dateien "mit Löchern" effizient handhaben |
− | *''-e'' hiermit lässt sich die | + | *''-X'' Xattrs erhalten |
+ | *''-v'' zeigt beim Kopieren alle Schritte, die gerade ausgeführt werden, an | ||
+ | *''-n'' simuliert den Kopierauftrag, trocke''n'' - ein Testlauf, der nichts wirklich kopiert | ||
+ | *''-z'' komprimiert den Datentransfer | ||
+ | *''-e'' hiermit lässt sich die Remote-Shell wählen, welche per Default SSH ist; andere lassen sich per <code>-e programm</code> angeben | ||
*''-b'' Backups werden erstellt | *''-b'' Backups werden erstellt | ||
− | *''-u'' update - Dateien, die im | + | *''-u'' update - Dateien, die im Backup schon vorhanden und sind sind, werden ausgelassen |
*''-v'' verbose - Gibt einen genauen Verlauf, insbesondere wenn Fehler auftauchen | *''-v'' verbose - Gibt einen genauen Verlauf, insbesondere wenn Fehler auftauchen | ||
*''--backup-dir=Verzeichnis'' ;kann ein Verzeichnis angeben werden | *''--backup-dir=Verzeichnis'' ;kann ein Verzeichnis angeben werden | ||
Zeile 41: | Zeile 46: | ||
*''--delete'' Dateien, die auf der Quelle nicht mehr existieren, werden auch auf dem Ziel gelöscht. | *''--delete'' Dateien, die auf der Quelle nicht mehr existieren, werden auch auf dem Ziel gelöscht. | ||
*''--exclude=Verzeichnis'' Damit werden Verzeichnisse von dem Kopiervorgang ausgeschlossen | *''--exclude=Verzeichnis'' Damit werden Verzeichnisse von dem Kopiervorgang ausgeschlossen | ||
− | *''--size-only'' Hiermit kontrolliert rsync beim "Synchronisieren" nur die Dateigröße, was hilfreich ist, | + | *''--size-only'' Hiermit kontrolliert rsync beim "Synchronisieren" nur die Dateigröße, was hilfreich ist, wenn der Zeitstempel der Zieldateien nicht mit den Quellstempeln übereinstimmen. |
Alle Optionen und eine Erläuterung ist mit man rsycnc oder rsync -h aufzurufen. | Alle Optionen und eine Erläuterung ist mit man rsycnc oder rsync -h aufzurufen. | ||
Zeile 53: | Zeile 58: | ||
Ziel und Quelle sind dabei unabhängig vom Rechner, so dass das BackUp im Rechner auf der gleichen, auf einer anderen Festplatte, im eigenen Netzwerk oder im Internet vorgenommen werden kann. | Ziel und Quelle sind dabei unabhängig vom Rechner, so dass das BackUp im Rechner auf der gleichen, auf einer anderen Festplatte, im eigenen Netzwerk oder im Internet vorgenommen werden kann. | ||
+ | |||
rsync -OPTIONEN foo:/home/secureme baa:/home/backup | rsync -OPTIONEN foo:/home/secureme baa:/home/backup | ||
Zeile 62: | Zeile 68: | ||
rsync -arbuv --delete --progress /home/yehudi/ /data1/home/yehudi | rsync -arbuv --delete --progress /home/yehudi/ /data1/home/yehudi | ||
− | + | In <code>data1</code> ist die 2. Festplatte eingebunden, auf der bei mir auch ein SUSE Linux 10.0 wie auf der ersten Festplatte installiert ist. | |
− | In data1 ist die 2. Festplatte eingebunden, auf der bei mir auch ein SUSE Linux 10.0 wie auf der ersten Festplatte installiert ist. | ||
== Syntaxen zum Übertragen == | == Syntaxen zum Übertragen == | ||
=== Allgemeine Syntax === | === Allgemeine Syntax === | ||
+ | |||
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST # lokale Quelle --> remote Ziel | rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST # lokale Quelle --> remote Ziel | ||
rsync [OPTION]... [USER@]HOST:SRC DEST # remote Quelle --> lokales Ziel | rsync [OPTION]... [USER@]HOST:SRC DEST # remote Quelle --> lokales Ziel | ||
Zeile 79: | Zeile 85: | ||
Hiermit wird der Inhalt des Verzeichnisses dem Host aufgeführt: | Hiermit wird der Inhalt des Verzeichnisses dem Host aufgeführt: | ||
+ | |||
rsync irgend.ein.host:/daten | rsync irgend.ein.host:/daten | ||
=== Anwendung im Netzwerk === | === Anwendung im Netzwerk === | ||
− | Mit folgender Befehlssyntax werden alle Files des aktuellen Verzeichnisses, die mit .c enden auf die | + | Mit folgender Befehlssyntax werden alle Files des aktuellen Verzeichnisses, die mit <code>.c</code> enden auf die Remote-Maschine nach <code>src</code> übertragen: |
+ | |||
rsync *.c irgend.ein.host:src/ | rsync *.c irgend.ein.host:src/ | ||
− | Hier wird der letzte Ordner übertragen (im Ziel ist das dann /daten/dir) | + | Hier wird der letzte Ordner übertragen (im Ziel ist das dann <code>/daten/dir</code>) |
+ | |||
rsync -azv /src/dir irgend.ein.host:/daten | rsync -azv /src/dir irgend.ein.host:/daten | ||
− | So wird nur der Inhalt des Ordner | + | So wird nur der Inhalt des Ordner <code>dir</code> übertragen, aber der Ordner selber nicht. |
+ | |||
rsync -azv /src/dir/ irgend.ein.host:/daten | rsync -azv /src/dir/ irgend.ein.host:/daten | ||
Übertragung mit User und Port: | Übertragung mit User und Port: | ||
+ | |||
rsync -azv /src/dir/ user@irgend.ein.host:9999/daten | rsync -azv /src/dir/ user@irgend.ein.host:9999/daten | ||
Klassisches Beispiel für das Sichern des eigenen Home-Verzeichnisses auf einem Server im Netz. | Klassisches Beispiel für das Sichern des eigenen Home-Verzeichnisses auf einem Server im Netz. | ||
− | rsync -abruvz --delete --progress | + | |
+ | rsync -abruvz --delete --progress /home/me foobar.com:/backup/home/me | ||
=== Lokales Übertragen von Dateien === | === Lokales Übertragen von Dateien === | ||
+ | |||
rsync -azv /src/dir /daten # überträgt das Verzeichnis /src/dir komplett nach /daten | rsync -azv /src/dir /daten # überträgt das Verzeichnis /src/dir komplett nach /daten | ||
rsync -azv /src/dir/ /daten # überträgt nur den Inhalt | rsync -azv /src/dir/ /daten # überträgt nur den Inhalt | ||
Zeile 105: | Zeile 118: | ||
= Backups automatisieren = | = Backups automatisieren = | ||
− | Das Backup jedesmal von Hand auszuführen macht natürlich wenig Sinn, wer vergisst das nicht schon mal. | + | Das Backup jedesmal von Hand auszuführen macht natürlich wenig Sinn, wer vergisst das nicht schon mal.<!-- Weiß ich doch nicht --> |
Hier werden ein paar Wege davon beschrieben, wie man es am einfachsten lösen könnte. | Hier werden ein paar Wege davon beschrieben, wie man es am einfachsten lösen könnte. | ||
== halt.local == | == halt.local == | ||
− | Viele privat genutzte Maschinen werden abends ausgeschaltet. Hier bietet es sich an, rsync durch das Skript | + | Viele privat genutzte Maschinen werden abends ausgeschaltet. Hier bietet es sich an, rsync durch das Skript <code>/etc/init.d/halt.local</code> aufzurufen. <code>halt.local</code> wird jedesmal aufgerufen, wenn die Maschine heruntergefahren wird. |
Beispiel Eintrag wenn man es in die Datei integriert: | Beispiel Eintrag wenn man es in die Datei integriert: |
Version vom 16. Mai 2007, 21:31 Uhr
Autor: Yehudi
Inhaltsverzeichnis
Einführung
rsync ist ein Netzwerkprotokoll, welches unter GPL steht. Das Programm ist für Backups bestens geeignet (Kopien von A nach B), aber eine Sychronisation von den Daten findet nicht statt. Werden auf B Daten geändert, so können diese nicht abgegeglichen werden. Sind bei einem Backup Daten mit der selben Zeitangabe vorhanden, werden diese nicht überschrieben, was Zeit spart. Das Backup-Programm wurde von Entwicklern des Samba-Team, u.a. von Paul Mackeras und Andrew Tridgell, programmiert.
Das Tool kann auch mit SSH kombiniert werden.
Im Gegensatz zu cp, welches man zum Kopieren auf der Konsolen nutzen kann, bietet rsync zahlreiche Steuerungsmöglichkeiten, die unter cp nicht vorhanden sind. cp würde z.B. bereits vorhandene Dateien erneut kopieren.
Installation
Ich setze einfach eine Installation mit APT oder smart vorraus. Dann muss sich nur noch als root in der Konsole angemeldet werden und
apt-get install rsync
oder
smart install rsync
eingetippt werden.
Funktionen über die Konsole
Optionen
- -a umfasst folgende Optionen (Die Option zu verwenden ist sinnvoll, da die Rechte im Ziel übereinstimmen sollten):
- -r kopiert Unterverzeichnisse, lässt rsync rekursiv arbeiten
- -l kopiert symbolische Links
- -p behält Rechte bei
- -t behält Zeiten bei,
- -g behält Gruppenrechte bei
- -D behält Gerätedateien bei; nur root
- -A ACLs erhalten
- -H Hardlinks erhalten
- -S Dateien "mit Löchern" effizient handhaben
- -X Xattrs erhalten
- -v zeigt beim Kopieren alle Schritte, die gerade ausgeführt werden, an
- -n simuliert den Kopierauftrag, trocken - ein Testlauf, der nichts wirklich kopiert
- -z komprimiert den Datentransfer
- -e hiermit lässt sich die Remote-Shell wählen, welche per Default SSH ist; andere lassen sich per
-e programm
angeben - -b Backups werden erstellt
- -u update - Dateien, die im Backup schon vorhanden und sind sind, werden ausgelassen
- -v verbose - Gibt einen genauen Verlauf, insbesondere wenn Fehler auftauchen
- --backup-dir=Verzeichnis ;kann ein Verzeichnis angeben werden
- --progress Hier wird der Fortschritt während der Übertragung angezeigt
- --delete Dateien, die auf der Quelle nicht mehr existieren, werden auch auf dem Ziel gelöscht.
- --exclude=Verzeichnis Damit werden Verzeichnisse von dem Kopiervorgang ausgeschlossen
- --size-only Hiermit kontrolliert rsync beim "Synchronisieren" nur die Dateigröße, was hilfreich ist, wenn der Zeitstempel der Zieldateien nicht mit den Quellstempeln übereinstimmen.
Alle Optionen und eine Erläuterung ist mit man rsycnc oder rsync -h aufzurufen.
Verwendung
Vereinfacht:
rsync quelle ziel
Die Befehlsformel für rsync sieht wie folgt aus:
rsync -OPTIONEN QUELLE ZIEL
Ziel und Quelle sind dabei unabhängig vom Rechner, so dass das BackUp im Rechner auf der gleichen, auf einer anderen Festplatte, im eigenen Netzwerk oder im Internet vorgenommen werden kann.
rsync -OPTIONEN foo:/home/secureme baa:/home/backup
Hinweis: |
Wird bei einem Quellordner mit einem "/" beendet, wird lediglich der Inhalt des Ordners kopiert, nicht aber der Quellordner selbst |
Spiegeln von Ordnern
rsync -arbuv --delete --progress /home/yehudi/ /data1/home/yehudi
In data1
ist die 2. Festplatte eingebunden, auf der bei mir auch ein SUSE Linux 10.0 wie auf der ersten Festplatte installiert ist.
Syntaxen zum Übertragen
Allgemeine Syntax
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST # lokale Quelle --> remote Ziel rsync [OPTION]... [USER@]HOST:SRC DEST # remote Quelle --> lokales Ziel rsync [OPTION]... SRC [SRC]... DEST # nur lokal rsync [OPTION]... [USER@]HOST::SRC [DEST] rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
Auflistung von Dateien
Hiermit wird der Inhalt des Verzeichnisses dem Host aufgeführt:
rsync irgend.ein.host:/daten
Anwendung im Netzwerk
Mit folgender Befehlssyntax werden alle Files des aktuellen Verzeichnisses, die mit .c
enden auf die Remote-Maschine nach src
übertragen:
rsync *.c irgend.ein.host:src/
Hier wird der letzte Ordner übertragen (im Ziel ist das dann /daten/dir
)
rsync -azv /src/dir irgend.ein.host:/daten
So wird nur der Inhalt des Ordner dir
übertragen, aber der Ordner selber nicht.
rsync -azv /src/dir/ irgend.ein.host:/daten
Übertragung mit User und Port:
rsync -azv /src/dir/ user@irgend.ein.host:9999/daten
Klassisches Beispiel für das Sichern des eigenen Home-Verzeichnisses auf einem Server im Netz.
rsync -abruvz --delete --progress /home/me foobar.com:/backup/home/me
Lokales Übertragen von Dateien
rsync -azv /src/dir /daten # überträgt das Verzeichnis /src/dir komplett nach /daten rsync -azv /src/dir/ /daten # überträgt nur den Inhalt rsync *.jpg /daten/bilder # überträgt nur .jpg Dateien nach /daten/bilder
Backups automatisieren
Das Backup jedesmal von Hand auszuführen macht natürlich wenig Sinn, wer vergisst das nicht schon mal. Hier werden ein paar Wege davon beschrieben, wie man es am einfachsten lösen könnte.
halt.local
Viele privat genutzte Maschinen werden abends ausgeschaltet. Hier bietet es sich an, rsync durch das Skript /etc/init.d/halt.local
aufzurufen. halt.local
wird jedesmal aufgerufen, wenn die Maschine heruntergefahren wird.
Beispiel Eintrag wenn man es in die Datei integriert:
#! /bin/sh # # Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany. All rights reserved. # # Author: Werner Fink <werner@suse.de>, 1998 # Burchard Steinbild, 1998 # # /etc/init.d/halt.local # # script with local commands to be executed from init on system shutdown # # Here you should add things, that should happen directly before shuting # down. # rsync -arbuv --delete --progress /opt/lampp /sicherung rsync -arbuv --delete --progress /home /sicherung
Script
Dieses Script ist regelmäßig über einen CronJob auszuführen:
#!/bin/bash # # Scriptname backup.sh (Backup mit rsync und KDE Dialogen) # Funktion Backup auf USB, PCMCIA oder 2. Festplatte erstellen # oder einfach von Verzeichnis X nach Verzeichnis Y # benötigt bash, KDE & rsync # # Autor Hermann Friedhoff # Ungelsheimerstr. 81 # 47259 Duisburg # # Programm-Status noch in Arbeit ( wer wird schon fertig??? ) # Bekannte Fehler keine, oder??? ( Naubadi is pörfekt ) # Start 25.07.2003 # Stand 25.05.2005 # # Variablen: $HOME das Home Verzeichnis (vom System) # $USER der angemeldete Benutzer (vom System) # para Parameter für rsync, für Details "man rsync" in eine Shell eintippen # log_datei Textdatei mit einer Auflistung der gesicherten Dateien # idzb Verzeichnis um zu testen ob das Zielverzeichnis beschreibbar ist # quelle das Verzeichnis das gesichert werden soll # ziel der Pfad für das zu sichernde Verzeichnis # fehler 0 alles O.K und 1 ein Fehler ist aufgetreten # # bei folgenden 3 Variablen kann der Inhalt geändert werden log_datei="Backup vom `date +'%d.%m.%y - %H:%M:%S'`.txt" para="-av" idzb=".test_idzb.tmp" # ab hier sind keine Änderungen mehr erforderlich quelle="" ziel="" fehler="0" if quelle=`kdialog --title "Zu sicherndes Verzeichnis auswählen" --getexistingdirectory "$HOME" "*"` then if ziel=`kdialog --title "Verzeichnis zum sichern auswählen" --getexistingdirectory "$HOME" "*"` then if [ -f /usr/bin/rsync ] then rmdir`date +'%d.%m.%y - %H:%M:%S'` "$ziel/$idzb" >/dev/null if mkdir "$ziel/$idzb" >/dev/null then rmdir "$ziel/$idzb" >/dev/null fehler=0 echo "Backup von $quelle" > "$ziel/$log_datei" echo "" >> "$ziel/$log_datei" if ! rsync $para "$quelle" "$ziel" >> "$ziel/$log_datei" then kdialog --error "Beim Backup von $quelle nach $ziel ist ein Fehler aufgetreten." fehler=1 fi if [ "$fehler" = "0" ] then kdialog --msgbox "Fertig, Backup von $quelle nach $ziel wurde erstellt." else kdialog --error "Fehler, Backup konnte nicht korrekt erstellt werden." fi else kdialog --error "Abbruch, schreiben auf $ziel nicht möglich." fi else kdialog --error "Abbruch, das Programm /usr/bin/rsync fehlt." fi else kdialog --error "Abbruch, durch Benutzer $USER." fi else kdialog --error "Abbruch, durch Benutzer $USER." fi
Grafische Oberflächen zu rsync
Grsync
qsync
Unison
Eine weitere Möglichkeit, die sich unabhängig von dem Betriebssystem nutzen lässt wäre Unison, welches eine "Syncronisation" über die Plattform hinweg ausführen.
Das Programm ist hier näher beschrieben:
Quellen
- Michael Kofler, Linux (7. Auflage) S. 212
- http://de.linwiki.org/index.php/Rsync
- http://de.susewiki.org/index.php?title=Backups
- http://wiki.ubuntuusers.de/rsync
- http://www.linux-club.de/viewtopic.php?t=31524
- Snapshot-Backups mit Rsync
- Server schnell und kostengünstig spiegeln
- http://www.linux-magazin.de/Service/Listings/2004/09/Rsyc-Backup/backup-rsync
- http://www.linux-magazin.de/Service/Listings/2004/09/Rsyc-Backup/backup-rsync-konv
- http://www.heinlein-support.de/web/wissen/rsync-backup/
- Using Rsync and SSH
- Wikipedia
- Homepage von rsync
- http://www.debianadmin.com/rsync-backup-web-interfacefrontend-or-gui-tools.html#more-144
- rsync mit OSX
- rsync mit OSX
- Webpräsenz von Unison
- Mehr Informationen zu rsync unter Windows in der englischen Wikipedia
- http://www.debianhelp.co.uk/rsyncweb.htm
- http://de.susewiki.org/index.php?title=Backups
zurück zu File-Server
zurück zu Security
zurück zur Konsole
zurück zum Webbrowser
zurück zum LAMP