Suche Programm zum synchronisieren

badday

Commander
Registriert
Sep. 2007
Beiträge
3.023
Moin zusammen,

ich brauche ein simples Programm, um 1 Verzeichnis zu synchronisieren. Darin befinden sich verschiedene Programmierprojekte. Es sollte auch offline (sprich ohne Internet) funktionieren. Cool wäre natürlich, wenn das irgendwie mit einer Versionsverwaltung zusammenspielt.

Weiß da irgendjemand etwas?

Vielen Dank.

Gruß,

badday

EDIT: Ja, der Thread-Titel ist falsch geschrieben. Synchronisieren müsste wohl groß geschrieben werden. :-)
 
Zuletzt bearbeitet:
//edit: Hier stand Mist -.-
 
Moin,
Allwaysync ist ein ganz praktisches, kostenloses Programm, ansonsten kenne ich noch den hier, der ist irgendwie noch einfacher/bequemer, aber kostet Geld.
Meiner Erinnerung nach funktioniert das Erkennen von geänderten Datein mit beiden Programmen.
Gruß
 
Zuletzt bearbeitet:
@freak01: Das ist sehr schön. Danke dir.

Gibt es da eine einfache Möglichkeit, um das ganze zu automatisieren? Perfekt wäre es, wenn er vor dem Herunterfahren immer nochmal synchronisieren würde oder auch alle 10 Minuten, er sollte dann jeweils die, die zuletzt geändert wurde auf den anderen übertragen. Ist das möglich?


Vielen Dank.

Gruß,

badday
 
Zuletzt bearbeitet:
Grsync kenne ich jetzt nicht, aber laut dem Wiki ist es ja nur ein GUI für rsync. Und rsync kannst du prima in eigenen Skripten verwenden, welche du per cron auch alle 10min bzw. vor dem shutdown (Runlevel 0) ausführen kannst.
 
OK, das mit den 10 Minuten würde wohl so aussehen:
# min std Tag Monat WT User Befehl
*/10 * * * * badday /pfad/script.sh
Wie das aber mit dem shutdown geht, weiß ich nicht. script.sh ist dann einfach ein Batch-Skript nehme ich an?
Wäre echt super, wenn mir einer ein Beispiel zeigen könnte.

Vielen Dank soweit.

Gruß,

badday
 
dann schau doch mal deine init-Skripte, die beim booten geladen sind, diese funktioniert auch fürs runlevel 0 und 6 wenn dem entsprechenden Runlevels eingestellt werden.
 
OK, also ich denke man muss an /etc/init.d/halt folgendes machen:
rsync -a -e ssh quellordner/ [ziel-ip]:/zielordner [excludes]
Kann ich dem ganzen auch gleich das Passwort mit auf den Weg geben?
Zu den 10 Minuten:
#!/bin/bash
while(1)
{
rsync -a -e ssh quellordner/ [ziel-ip]:/zielordner [excludes]
sleep 10m
}

Würde das (zugegeben völlig primitiv) funktionieren, wenn ich das automatisch starten würde?

Gruß,

badday
 
Wenn du den cron-Daemon schon im Hintergrund laufen hast, würde ich den Befehl einfach als cron-job anlegen. Einfacher gehts nicht und du brauchst keinen zusätzlichen service im Hintergrund. Fürs Runterfahren ein einfacher shutdown skript mit dem Befehl noch ein mal sollte reichen.
Ohne Passworteingabe wird das ganze aber schwierig. Mir fällt jetzt nur die Möglichkeit ein im Server den public-key zu setzen. Wenn du darauf Zugriff hast. Ansonsten fällt mir jetzt spontan keine Lösung ein...
 
SSH ohne Password: public key oder mit expect, der kann's auch.

Du musst den Skript nicht direkt in halt einbinden, sondern kannst auch in /etc/init.d/myscript schreiben und ihn an rcX.d verlinken in Form von KYYmyscript wobei X eine Zahl von Runlevel und YY eine Zahl von Ausführreihenfolge ist.
 
@GrayFoxHard: Also mit cron-jobs habe ich noch nie zu tun gehabt. Daher weiß ich auch nicht, wie man dann eine solche "Tabelle" benutzt.
Fürs Runterfahren ein einfacher shutdown skript mit dem Befehl noch ein mal sollte reichen.
Geht da das erste oben?
Mir fällt jetzt nur die Möglichkeit ein im Server den public-key zu setzen. Wenn du darauf Zugriff hast.
Der "Server" ist mein anderer PC, die Synchronisierung erfolgt in beide Richtungen. Auch mit ssh habe ich keine Erfahrung, daher wäre es gut, wenn du mir ein kurzes Beispiel zeigen könntest, wie man das mach (gerne auch im web).

@Sug82: Das heißt, ich müsste es in diesem Fall mit welchem Runlevel verlinken? Sry, ich bin hier absoluter Newbie...


Vielen Dank.

Gruß,

badday
 
Zuletzt bearbeitet:
man inittab ergibt:

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

PS: Als ich mal newbie war, habe ich auch viel mit manpage gekämpft.
 
Das Problem, dass hier entstehen könnte ist, dass die beiden Computer nicht immer an sind, daher wird das ganze meist Fehlschlagen.
Gibt es eine Automatismus, der das ähnlich wie ein verteiltes Versionskontrollsystem macht? Oder wäre es für diesen Einsatz nicht grundsätzlich besser auf z. B. Git zurückzugreifen?

Danke.

Gruß,

badday
 
Was genau möchtest du erreichen?

Soll der 2. Server ein Backup enthalten, welches regelmäßig aktualisiert wird? In diesem Fall ist die Lösung mit rsync schon gut. Du kannst natürlich auch rsnapshot verwenden und damit auf einfache Weise verschiedene Zustände sichern, so dass du auch nochmal zu einem älteren Stand zurückkehren kannst.
Du könntest auf dem 2. Server deinen Public-Key hinterlegen und somit den Login per SSH ohne Passwort ermöglichen. Dann kannst du in einem Skript rsync (bzw. rsnapshot) aufrufen und die Synchronisation über SSH laufen lassen. Dieses Skript dann noch einfach mit Hilfe von cron alle X Minuten starten.

Wenn der 2. Server immer exakt den selben Stand haben soll (etwa, weil darauf auch gearbeitet wird), empfiehlt es sich aus meiner Sicht eher, ein CVS wie git zu verwenden und beide Server online mit einem DFS (distributed file system) abzugleichen. Das ist für einen Anfänger jedoch ein recht dicker Brocken und ich würde dir die erste Variante nahe legen.

Am besten kann dir geholfen werden, wenn du deine Anforderungen nochmal genau definierst. ;)
 
Zuletzt bearbeitet:
OK, ich werde es versuchen:
Ich habe 2 PCs auf denen ich abwechselnd an den selben Programmierprojekten schreibe. Diese befinden sich in einem lokalen Netzwerk. Ich möchte nun, dass beide den selben Stand haben, also, dass immer wieder automatisch synchronisiert wird. Es wäre dabei gut, wenn ich auch auf verschiedene Revisionen zugreifen könnte. Ich hatte mir auch selbst überlegt, irgendwie Git lokal zu nutzen. Wäre das eine gute Alternative?

Gruß,

badday
 
Ich sehe da bei der Verwendung von rsync in diesem konkreten Fall ein kleines Problem.

Wenn er auf beiden PCs unregelmäßig wechselnd arbeitet und auch mal Dateien löscht, muss die Synchronisation getriggert bzw. muss vor der Synchronisation die gerade erforderliche Richtung ermittelt werden. Ansonsten kann es passieren, dass bereits gelöschte Dateien von dem anderen PC wieder geholt und somit unerwünscht wiederhergestellt werden. Man wird die Dinger dann nicht so einfach los - insbesondere, wenn es automatisiert abläuft. ;)

Vielleicht ist in diesem Fall git doch besser, da ja ohnehin eine Versionsverwaltung gewünscht ist. Ich würde daher den einen Server als Host für das Repository verwenden und von dem anderen PC dann je nach Bedarf remote committen. Das hat den Nachteil, dass es nicht automatisch funktioniert, aber den Vorteil, dass der Datenbestand auf jeden Fall konsistent bleibt. Auf dem Repository-Host kann das Ganze äquivalent dazu eingerichtet werden, so dass das Handling mit git nicht großartig unterschiedlich ist.

Einfach mal nach "git remote repository" googeln.
 
Zurück
Oben