PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu rsync



pixel
29.01.04, 14:17
Hi@all,

ich möchte zwei Datenpartitionen meines Linux-Server (Rechner1):

/data
/data1

auf einen anderen Linux-Rechner (Rechner2) im LAN synronisieren. Dabei bin ich auf rsync gestoßen das das wohl für diesen Zweck bestens geeignet zu sein scheint. Also habe ich auf beiden Rechnern rsync installiert, ssh läuft sowieso und ich habe ssh-key's erzeugt damit sich Rechner1 per ssh auf Rechner2 ohne Passworteingabe einloggen kann. Auf Rechner2 habe ich ein Verzeichnis:

/save

angelegt. Nun möchte ich die Syncronisation starten. Dies soll Verschlüsselt (ssh) und komprimiert ablaufen. Also würde derAufruf:

rsync -avz --delete -e ssh data root@rechner2:/save

lauten, oder? Nun meine Fragen. Wie kann ich zwei oder mehrere Verzeichnisse syncronisieren (/data & /data1)? Was bewirkt dieser Aufruf genau? Einen einmaligen Ablgleich oder eine ständige Syncronisation?

Für einen kleinen Tip wäre ich dankbar.

Gruß Pixel

ChandlerBing
29.01.04, 15:16
Der Aufruf sollte so stimmen.
Um mehrere Verzeichnisse in einem Rutsch zu syncen würde ich mir ein kleines skript schreiben, so a la:



#!/bin/bash
rsync -avz --delete -e ssh /data root@rechner2:/save
rsync -avz --delete -e ssh /data1 root@rechner2:/save1
...


Die Sychronisation erfolgt einmalig, wenn Du das Skript aufrufst.
Ständige Synchronisation kann man damit imo nicht machen.
Eine Idee wäre, das Skript z.B. stündlich per cronjob laufen zu lassen.

Hoffe das hilft,
Chandler

pixel
29.01.04, 16:32
Hi@all,

d.h. die Syncronisation erfolgt nicht ständig sobald sich etwas ändert? Ich dachte es handelt sich bei rsync um eine Syncronisation??

Gruß Pixel

Thomas
29.01.04, 16:55
Es handelt sich um Synchronisation.
Allerdings werden die Daten nicht stänig überwacht und synchronisiert, die Synchronisation muss explizit gestartet werden.
Im Normalfall sind die zu synchronisierenden Rechner nicht verbunden und sollen, sobald sie verbunden sind, ihren Datenbestand abgleichen. Daher ist eine dauerhafte Synchronisierung nicht vorgesehen. Da deine beiden Rechner anscheinend ununterbrochen verbunden sind, könntest du die Synchronisation wie von ChandlerBing vorgeschlagen z.B. mit cron in bestimmten Intervallen starten.

Benötigst du tatsächlich Synchronisatin oder möchtest du nur ein Backup machen?
Wenn die beiden Rechner dauerhaft verbunden sind könntest du auch gleich auf den selben Daten arbeiten (z.B. via NFS, ssh-fs, ...).


Thomas.

pixel
29.01.04, 17:04
Hi@all,

eigentlich wollte ich eine Syncronisation. Wenn diese nicht Zeitnah ist kann ich auch mit einem 15 Min Rythmus (cron) leben.

Gruß Pixel

pixel
29.01.04, 17:32
Hi@all,

das funktioniert nun prima. Ich habe mir ein kleines Skript gemacht:

#!/bin/sh
rsync -avz --delete -e ssh data root@condomy:/data/save/datasync/data
rsync -avz --delete -e ssh data1 root@condomy:/data/save/datasync/data1

Nun möchte ich jedoch noch ein Verzeichnis ausschließen. Genauer gesagt finden sich im Verz. /data ein Unterverz. SuSE-CD.

Dies soll nicht syncronisiert werden. Wie kann ich dies ausschließen?

Gruß Pixel

ChandlerBing
29.01.04, 18:45
such mal in der manpage von rsync nach exclude

pixel
30.01.04, 12:39
Hi@all,

also in der Manpage habe ich den Parameter --exclude gefunde der wohl genau dafür da ist. Funktionieren tut es leider nicht. Ich habe folgenden Testgemacht.

Im Verzeichnis /data gibt es das Verzeichnis logon. Die soll per rsync auf den anderen Client übertragen werden. Im Verz. logon existiert noch das Verz. test und darin eine Datei test.txt. Das komplette Verzeichnis test soll --excludiert ;-) werden. Also habe ich meinen Befehl wie folgt formuliert:

rsync -avz --delete -e ssh data/logon --exclude "data/logon/test" root@rechner2:/data

Das Ergebnis:
Das Verz. logon wird auf Rechner2 gesichert jedoch wir das Verzeichnis test auch mit gesichert.

Gruß Pixel

ChandlerBing
31.01.04, 16:57
man rsync:

--exclude "foo/" would exclude any directory called foo