rsync auf mehrere Verzeichnisse sichern?
Pit
- linux
0 dedlfix0 MudGuard0 Pit0 dedlfix0 Tabellenkalk
Hallo,
ich möchte meinen lokalen Änderungen auf 3 Zielverzeichnisse sichern. Bisher mache ich das mit 3 aufeinanderfolgenden rsync-Befehlen.
Frage: Kann man das auch in einem Befehl machen?
Hintergrund: In diesem Fall habe ich kein Schlüsselpaar erzeugt und muß 3 mal das Passwort per Hand eintragen. Ginge es in einem Befehl, müßte ich das nur 1 mal machen.
Pit
Tach!
Frage: Kann man das auch in einem Befehl machen?
Fragen erkennt man sehr gut am Satzbau und dem Fragezeichen, eine weitere Einleitung ist in schriftlicher Kommunikation nicht nötig. Abgesehen davon kann man alls Befehle in einem Shellscript zusammenfassen. Das Passwort könnte man als Parameter übergeben, aber das ist keine so gute Idee, weil es auf diese Weise auch in der .bash_history landet. Besser mit read als Nutzereingabe abfordern und den rsyncs als Parameter übergeben.
Hintergrund: In diesem Fall habe ich kein Schlüsselpaar erzeugt
Am besten ist es, dieses Problem durch Erstellung oder Verwendung eines vorhandenen Schlüsselpaares zu beheben.
dedlfix.
Hallo,
Abgesehen davon kann man alls Befehle in einem Shellscript zusammenfassen.
Das habe ich ja gemacht. Alle 3 Befehle durch ein Semikolon getrennt und erhalte 3 x Passwortabfrage.
Am besten ist es, dieses Problem durch Erstellung oder Verwendung eines vorhandenen Schlüsselpaares zu beheben.
Das wollte ich in diesem Fall nicht, in einem anderen Fall mache ich es so, aber hier nicht. Daher meine Frage. Geht das denn nicht (3 Verzeichnisse in einem Befehl angeben)?
Pit
Tach!
Abgesehen davon kann man alls Befehle in einem Shellscript zusammenfassen.
Das habe ich ja gemacht. Alle 3 Befehle durch ein Semikolon getrennt und erhalte 3 x Passwortabfrage.
Ich schrieb doch, wie man das lösen kann. Frag das Passwort zuvor ab, leg es in eine Variable, übergibt diesen Variableninhalt an den Passwort-Parameter von rsync.
Daher meine Frage. Geht das denn nicht (3 Verzeichnisse in einem Befehl angeben)?
Eine Suche nach "rsync multiple destinations" gibt ein paar Ergebnisse, aber die sehen nicht gerade einfach aus. Wie wäre es, wenn du anschließend an den rsync von der Quelle zum ersten Ziel die anderen beiden Ziele mit dem ersten Ziel als Quelle befüllst. Vorausgesetzt, dass diese Zielverzeichnisse alle lokal sind. Dann spart man auch noch den zusätzlichen Netzwerkverkehr.
dedlfix.
Hi,
Eine Suche nach "rsync multiple destinations" gibt ein paar Ergebnisse, aber die sehen nicht gerade einfach aus. Wie wäre es, wenn du anschließend an den rsync von der Quelle zum ersten Ziel die anderen beiden Ziele mit dem ersten Ziel als Quelle befüllst.
Na die Idee finde ich klasse, das werde ich versuchen. Danke.
Pit
Hi,
Eine Suche nach "rsync multiple destinations" gibt ein paar Ergebnisse, aber die sehen nicht gerade einfach aus. Wie wäre es, wenn du anschließend an den rsync von der Quelle zum ersten Ziel die anderen beiden Ziele mit dem ersten Ziel als Quelle befüllst.
Na die Idee finde ich klasse, das werde ich versuchen. Danke.
Hallo,
da ich rsync hierfür wohl nicht nutzen kann, gibt es in cp eine Option, verzeichnisse auszuschließen?
Pit
Tach!
da ich rsync hierfür wohl nicht nutzen kann, gibt es in cp eine Option, verzeichnisse auszuschließen?
rsync arbeitet auch im lokalen Dateisystem.
dedlfix.
Hallo,
rsync arbeitet auch im lokalen Dateisystem.
Ich hatte eine Fehlermeldung bekommen… "The source and destination cannot both be remote." Wie ist denn die Syntax, wenn ich auf demselben Server rsync anwenden möchte?
Pit
Tach!
Wie ist denn die Syntax, wenn ich auf demselben Server rsync anwenden möchte?
Man-Pages existieren. Ansonsten fast genauso wie bei cp: rsync -a quellverzeichnis zielverzeichnis
ohne irgendwelche Hostnamen.
dedlfix.
rsync -a quellverzeichnis zielverzeichnis
ohne irgendwelche Hostnamen.
Und woher weiß dann rsync, ob er das verzeichnis lokal oder auf dem Server suchen soll?
Pit
Tach!
rsync -a quellverzeichnis zielverzeichnis
ohne irgendwelche Hostnamen.Und woher weiß dann rsync, ob er das verzeichnis lokal oder auf dem Server suchen soll?
Ohne Host-Angabe ist ein lokales Verzeichnis gemeint. Das hast du doch bereits bei deinen drei bisherigen rsync-Aufrufen. Da gibst du doch auch einen Verzeichnisnamen ohne Host an, das sich dann auf ein loakles Verzeichnis bezieht. (Ansonsten gäbs ja die Fehlermeldung mit den zwei remote-Zielen/-Quellen.)
dedlfix.
Hi,
Ohne Host-Angabe ist ein lokales Verzeichnis gemeint. Das hast du doch bereits bei deinen drei bisherigen rsync-Aufrufen. Da gibst du doch auch einen Verzeichnisnamen ohne Host an, das sich dann auf ein loakles Verzeichnis bezieht. (Ansonsten gäbs ja die Fehlermeldung mit den zwei remote-Zielen/-Quellen.)
Klar. Aber mein jetziges Ziel ist doch folgendes:
rsync dir1 local auf remote:dir1
rsync von remote:dir1 auf remote:dir2
rsync von remote:dir1 auf remote:dir3
Pit
- rsync dir1 local auf remote:dir1
- rsync von remote:dir1 auf remote:dir2
- rsync von remote:dir1 auf remote:dir3
Starte rsync auf dem remote-server. Der ist dann lokal (und dein bisheriger lokaler nunmehr host1
) und der Spaß sieht ergo so aus:
Leg Dir dazu ein Skript an und starte es per ssh. Du kannst soweit gehen, einen Benutzer (z.B. excecBackupUser
) anzulegen, der genau dieses Skript als shell hat und mit visudo sogar benötigte Rechte ohne Passworteingabe eingeräumt bekommt (man 5 sudoers
oder das Studium der Kommentare in /etc/sudoers
hilft).
Dann reicht ssh excecBackupUser@remote
.
Tach!
Aber mein jetziges Ziel ist doch folgendes:
rsync dir1 local auf remote:dir1
rsync von remote:dir1 auf remote:dir2
rsync von remote:dir1 auf remote:dir3
"Vorausgesetzt, dass diese Zielverzeichnisse alle lokal sind. Dann spart man auch noch den zusätzlichen Netzwerkverkehr."
Geht also nicht in deinem Fall. Jedenfalls nicht so. Man kann aber auch auf einem Remote-Ziel ein Kommando ausführen. ssh kann das beispielsweise so: ssh user@host "echo foo"
. Allerdings gibts da wieder ein Problem mit dem Password. Man kann es nicht als Parameter übergeben. Nimm mal doch lieber einen Key.
dedlfix.
Wie ist denn die Syntax, wenn ich auf demselben Server rsync anwenden möchte?
Wenn rsync läuft, dann geht auch ssh:
ssh userName@einServer rsync /sourceDir userName@andererServer:/targetDir
ich möchte meinen lokalen Änderungen auf 3 Zielverzeichnisse sichern. Bisher mache ich das mit 3 aufeinanderfolgenden rsync-Befehlen.
Frage: Kann man das auch in einem Befehl machen?
Wieso das denn? rsync ist super! Man sollte mal das Manual lesen und daran denken, dass es a) den mount-Befehl und b) immer ein root-Verzeichnis gibt. Und dann auf Ideen kommen:
1. Lösung:
mkdir /tmp/mutter;
mkdir /tmp/mutter/kind1;
mkdir /tmp/mutter/kind2;
mkdir /tmp/mutter/kind3;
mount -B /was1 /tmp/mutter/kind1;
mount -B /was2 /tmp/mutter/kind2;
mount -B /was3 /tmp/mutter/kind3;
rsync [OPTIONEN] /tmp/mutter/* userName@andererServer:/targetDir/;
if (umount /tmp/mutter/kind1 && umount /tmp/mutter/kind2 && umount /tmp/mutter/kind3 ); then
rm -r /tmp/mutter/;
fi
Das kann aber auch zu viel oder zu kompliziert sein, denn es geht viel einfacher:
2. (wohl bessere) Lösung:
Datei: rsync.excludes
: (Schließt erst einmal alles aus)
/*
/.*
Datei rsync.includes
: (Diese Dateien und Ordner werden dennoch gesichert/Übertragen)
/home
/var/spool/mail
/var/lib/mysql
… und dann ganz einfach:
rsync -avu --exclude-from="/path/to/rsync.excludes" --include-from="/path/to/rsync.excludes" / userName@andererServer:/targetDir/;
Beides geht auch via ssh. Zudem sollte Dich man 5 crontab
oder crontab -e
auf Ideen bringen...
Hi,
da ich Deine Lösung nicht verstehe, frage ich mal, ob wir ggf. aneinander vorbei reden? Ich hab in der Antwort auf dedlfix nochmal genau gepostet, was ich brauche. Was crontab angeht, das ist in diesem Fall nicht nötig.
Pit
ob wir ggf. aneinander vorbei reden?
Du hast um 13:15, also erst nach meinem Beitrag (von 12:52) Dein Problem konkretisiert, genauer ganz anders dargestellt. Die Antwort auf diese Konkretisierung/Richtigstellung steht schon da. Wenn es das auch nicht ist, dann poste Deine wirkliche Zielsetzung ohne fehlleitende Abstrahierung.
Und wenn ich schon dabei bin: Ich verstehe absolut nicht, warum die Nutzung von Keys verweigerst. Würdest Du uns bitte Deine Gründe dafür mitteilen?
Was crontab angeht, das ist in diesem Fall nicht nötig.
Aber womöglich eine verdammt gute Idee. Das spart nämlich Gefummel mit ssh und Rechten ...
Eine weitere Idee wäre übrigens nfs. (Auf remote Verzeichnisse exportieren, auf lokal mounten, dann rsync). Verwaltest Du beide Server als root?
sshfs käme auch in Frage.
rsync -avu --exclude-from="/path/to/rsync.excludes" --include-from="/path/to/rsync.excludes" / userName@andererServer:/targetDir/;
Da hat sich ein Fehler eingeschlichen. Es muss natürlich --include-from="/path/to/rsync.includes"
heißen.
Hi,
ich möchte meinen lokalen Änderungen auf 3 Zielverzeichnisse sichern. Bisher mache ich das mit 3 aufeinanderfolgenden rsync-Befehlen.
Bisher scheint ja etwas Unklarheit zu herrschen, was die genaue Aufgabe ist.
Welche Variante hast Du denn?
A)
local/dir1 -> server1/dir1
local/dir2 -> server2/dir2
local/dir3 -> server3/dir3
oder
B)
local/dir1 -> server1/dir1
local/dir1 -> server2/dir1
local/dir1 -> server3/dir1
oder
C)
local/dir1 -> server1/dir1
local/dir2 -> server1/dir2
local/dir3 -> server1/dir3
oder
D)
local/dir1 -> server1/dir1
local/dir1 -> server1/dir2
local/dir1 -> server1/dir3
bei A) oder B) wird wohl nix anderes übrigbleiben, als 3mal das Paßwort zu übergeben.
bei C) wäre die Lösung
rsync local/dir1 local/dir2 local/dir3 server1
bei D) wüßt ich spontan keine Lösung.
cu,
Andreas a/k/a MudGuard
Hallo,
Welche Variante hast Du denn?
D) local/dir1 -> server1/dir1 local/dir1 -> server1/dir2 local/dir1 -> server1/dir3
bei D) wüßt ich spontan keine Lösung.
Es ist Variante D…
Pit
Tach!
Welche Variante hast Du denn?
D) local/dir1 -> server1/dir1 local/dir1 -> server1/dir2 local/dir1 -> server1/dir3
bei D) wüßt ich spontan keine Lösung.
Es ist Variante D…
Einmal rsync nach dir1 und einen Cronjob auf server1 einrichten, der regelmäßig dir1 nach dir2 und dir3 synchronisiert. Backups macht man sowieso ungern per Hand, so dass eigentlich auch der erste Schritt automatisiert werden müsste.
dedlfix.
Hi,
Einmal rsync nach dir1 und einen Cronjob auf server1 einrichten, der regelmäßig dir1 nach dir2 und dir3 synchronisiert. Backups macht man sowieso ungern per Hand, so dass eigentlich auch der erste Schritt automatisiert werden müsste.
Das ist in disem Fall aber nicht sinnvoll. Es geht hier darum, eine lokale Entwicklung auf 3 Nutzer zu übertragen. Da bringts mir nichts, wenn das nachts um 3 geschieht, wenn ichs um 15 Uhr nachmittags schon benötige.
Wenn server1 abraucht, sind alle drei Sicherungsverzeichnisse weg.
Das ist Unsinn, denn die Sicherung des servers läuft natürlich nachts per Cron, dann aber auf einen Backupserver, der hier in der Aufgabenstellung völlig unberücksichtigt bleibt (was für diese Aufgabenstellung auch gerne so bleiben darf).
Pit
Hi,
Es geht hier darum, eine lokale Entwicklung auf 3 Nutzer zu übertragen.
bearbeiten diese 3 Nutzer die Sachen, oder brauchen die das nur zum Angucken?
Wenn letzteres: genau diese 3 User in eine Gruppe packen, nur einmal nach server1/dir1 schieben, und dir1 genau für diese Gruppe freigeben.
cu,
Andreas a/k/a MudGuard
Hallo,
bearbeiten diese 3 Nutzer die Sachen, oder brauchen die das nur zum Angucken?
Nein, die bearbeiten das auch und brauchen alle ihre eigenständige Kopie.
Ich versuche gerade einen zweiten ssk-key hierfür anzulegen, aber es gelingt mir nicht. Der erste war unproblematisch, aber der zweite will nicht, das scheint ein Rechteproblem des Serverbetreibers zu sein. Als User1 darf und kann ich, als User2 aber nicht. Blöd nur, dass die 3 Dirs alle unter User2 laufen und das soll auch so bleiben, da ich nicht zuviele Rechte für diese 3 Dirs freigeben möchte. Irgendwie beißt sich das wohl die Katze in ...
Pit
bearbeiten diese 3 Nutzer die Sachen, oder brauchen die das nur zum Angucken? Nein, die bearbeiten das auch und brauchen alle ihre eigenständige Kopie.
Falls es um Softwareentwicklung geht:
Falls es um Softwareentwicklung geht:
Da nutze ich Mercurial, aber dennoch gehts mir jetzt in diesem Fall wirklich um rsync.
Pit
Ich schließe mich jetzt Mudguards implizierter Frage nach der genauen Aufgabe ("Bisher scheint ja etwas Unklarheit zu herrschen, was die genaue Aufgabe ist.") an und warte auf deren Beantwortung.
Es ist nämlich nicht erbauend auf Grund falscher Beschreibungen falschen Vermutungen zu erliegen und sich ohne Erfolg einen Haufen Arbeit zu machen.
Und bitte nenne und auch einschränkende Nebenbedingungen, z.B. wenn Du auf einem oder mehreren der Hosts keine Root-Rechte hast oder wenn einer oder mehrere derselben nicht erreichbar sind (z.B. weil diese in einem lokalen Netz mit privater IP stehen wie es bei einem DSL-Anschluss aber auch in Firmennetzen absolut üblich ist.
Hallo,
D) local/dir1 -> server1/dir1 local/dir1 -> server1/dir2 local/dir1 -> server1/dir3
bei D) wüßt ich spontan keine Lösung.
Es ist Variante D…
Und ich wüßte spontan keine sinnvolle Anwendung für Variante D…
Wenn server1 abraucht, sind alle drei Sicherungsverzeichnisse weg.
Gruß
Kalk
Tach!
Und ich wüßte spontan keine sinnvolle Anwendung für Variante D…
Wenn server1 abraucht, sind alle drei Sicherungsverzeichnisse weg.
Wenn der "Server abraucht" sind möglicherweise nicht gleich alle Platten gleichsam betroffen, und die Verzeichnisse könnten auf unterschiedlichen Platten oder auch externen Laufwerken liegen.
dedlfix.
Hallo,
Wenn der "Server abraucht" sind möglicherweise nicht gleich alle Platten gleichsam betroffen, und die Verzeichnisse könnten auf unterschiedlichen Platten oder auch externen Laufwerken liegen.
Für backups erscheint mir der Konjunktiv irgendwie ungeeignet. Aber dem Pit gehts offenbar gar nicht um eine Sicherung.
Gruß
Kalk
Aber dem Pit gehts offenbar gar nicht um eine Sicherung.
Hi,
nein, absolut nicht. Die läuft zwar auch, aber von diesem Vorgnag völlig unabhängig.
Pit
Hallo,
So ein bisschen wundert man sich schon über den threadtitel…
Gruß
Kalk
Hallo,
So ein bisschen wundert man sich schon über den threadtitel…
Inwiefern?
Pit
So ein bisschen wundert man sich schon über den threadtitel…
Inwiefern?
Es fehlt vorn ein "Mit", in der Mitte steht "auf" und hinten steht "sichern".
Du willst nämlich gar nicht "rsync auf mehrere Verzeichnisse sichern" sondern "Mit rsync in mehrere Verzeichnisse kopieren und unterschiedliche Rechte gewähren". Probleme richtig zu beschreiben hilft den Helfern und ist zielführend. Die Lösung eines nicht richtig beschriebenen Problems ist allenfalls zufällig richtig. Selbst wenn sie irgendwie funktionieren sollte dann gäbe es bessere.
Irgendjemand hat hier schon Jahren mal geschrieben, dass die korrekte Beschreibung eines Problems oft selbst zur Lösung führt.
Hallo Pit,
Threadtitel: rsync auf mehrere Verzeichnisse sichern?
und in https://forum.selfhtml.org/self/2018/feb/2/rsync-auf-mehrere-verzeichnisse-sichern/1713153#m1713153
dem Pit gehts offenbar gar nicht um eine Sicherung.
nein, absolut nicht. Die läuft zwar auch, aber von diesem Vorgnag völlig unabhängig.
Gruß
Jürgen
Hallo,
Inwiefern?
Weil du dort „sichern“ schreibst, jetzt aber zugibst, dass es gar nicht ums sichern geht.
Gruß
Kalk
hallo,
ich habs jetzt über ein simples php-script gelöst, welches die (ausschlielich modifizierten) Dateien kopiert. Da es sich nur um knapp über 1000 Dateien (insgesamt) handelt und die veränderten Dateien sich im Bruchteilbereich hiervon befinden, geht das (trotz filemtime + touch) sehr flott. Insofern passt das für mich.
Danke dennoch für die Hilfe, Pit