monaco05
Goto Top

Robocopy Sicherung und Verzeichnisse überwachen

Hallo,

folgendes Szenario:

Ich will ein Verzeichnis (inkl. Unterverzeichnisse) auf meinem lokalen Rechenr auf einen Server sichern. Dabei soll bei jeder Änderung innerhalb der Verzeichnisstruktur (d.h. neue Dateien, neuer Ordner, Dateien bearbeiten etc.) sofort der Kopiervorgang gestartet werden.

Wichtig: Es soll auch nur der Ordner bzw. Datei kopiert werden, der sich geändert hat.


Folgendes habe ich bis jetzt realisiert:

Kopieren mit Robocopy, wobei er auf oberster Wurzel beginnt zu kopieren und nur neuere, d.h. geänderte Dateien kopiert. Das ist vom Prinzip richtig. Nur schaut er momentan den ganzen Verzeichnisbaum durch, ob neuer Dateien vorhanden sind und gleicht ja diese mit dem Zielverzeichnis ab. Das dauert für mein Szenario zu lang (deshalb soll er nur geänderte Verzeichnisse/Dateien prüfen und übertragen).
Außerdem muss ich momentan das Robocopy Batchfile per Hand starten. Der angebaute Monitior von Robocopy kann maximal bis 1 Minute gestellt werden. Brauch hier aber 1 sec.

Also meine Ideallösung wäre:
Quell-Verzeichnis wird auf Änderung überwacht. Sobald was auftritt, soll Robocopy gestartet werden und nur den Verzeichnisteil prüfen und übertragen, in dem sich was getan hat.


Komme momentan nicht weiter...

Content-Key: 119694

Url: https://administrator.de/contentid/119694

Printed on: April 25, 2024 at 21:04 o'clock

Member: -ricardo-
-ricardo- Jul 03, 2009 at 11:50:28 (UTC)
Goto Top
Tach auch,

guck dir mal die Robocopy Gui an, da kann man auch Zeitgesteuerte aufträge erstellen.

http://www.heise.de/software/download/special/backup_mit_robocopy/17_1

Schön ist auch, dass man alle Parameter im Blickt hat, jedoch ohne erklärung...

Gruß
-ricardo-
Member: monaco05
monaco05 Jul 03, 2009 at 12:16:31 (UTC)
Goto Top
ok danke,

hilft mir aber nicht weiter. Es kann nur bis 1 Minute eingestellt werden. Es muss aber sofort ein Kopiervorgang gestartet werden, sobald sich was geändert hat (1 sec maximal).

Außerdem würde er immer noch jeden potentiellen Ordner prüfen. Er soll nur ab dem Verzeichnis sichern, in dem sich was geändert hat.

Hab mir schon http://www.xtware.com/filenotify/index.html angeschaut. FileNotify überwacht Verzeichnisse und ruft dann ein Batchfile auf (außerdem wird der Pfad übergeben, in dem sich was geändert hat). Bloß ruft er mir leider mein Robocopy-Batchfile nicht auf (obwohl im FileNotify-Log keine Fehlermeldung auftaucht, d.h. er erkennt die Änderungen im Verzeichnisbaum korrekt aber die Batch wird anschließend nicht aufgerufen)
Member: miniversum
miniversum Jul 03, 2009 at 12:42:12 (UTC)
Goto Top
Du könntest das ganze so aufbauen das du dir mit dir eine auflistung der Dateien machen läst die ein gesetztes archivatribut besitzen
dir /b /s /AA
Diese liste gehst du in einer For-Schleife durch, kopierst diese Dateien und setz ihr Archivierungs-Attribut zurück (siejhe attrib /?)
1s Wartezeit bekommst du über
ping -n 1 localhose >NUL
hin.
Das Ganze dann in einer Schleife.
Die Auflistung über den dir-Befehl geht schneller.
Das Archivierungs-Attribut wird automatisch für neue/geänderte Dateien gesetzt.
Member: jumilla
jumilla Jul 03, 2009 at 15:10:31 (UTC)
Goto Top
Ich denke für einen so schnellen Abgleich ist Robocopy das falsche Werkzeug.
Member: perseues
perseues Jul 03, 2009 at 15:20:46 (UTC)
Goto Top
wenn Du etwas Ahnung von .net hast, könntest Du auch die FileSystemWatcher-Klasse verwenden. Ich habe mal ein Programm gebastelt, dass ein Verzeichnis überwacht hat und bei einer Änderung eine Mail verschickt hat. Im Internet findet man diverse Beispiele.

Grüße p
Member: v-m-r-de
v-m-r-de Jul 03, 2009 at 17:56:04 (UTC)
Goto Top
Hi,

vielleicht wäre dann Powerfolders eine Alternative dazu.

Aber mal eine ganz andere Frage:
Warum legst Du dann nicht gleich die Daten auf dem Server ab und arbeitest über die Server-Freigabe?
Und warum sollen auf beiden System die Daten innerhalb einer Sekunde verfügbar sein?
Ändern sich viele kleine Dateien oder eher wenige, große Dateien?

Gruß,
Volker
Member: monaco05
monaco05 Jul 06, 2009 at 06:31:43 (UTC)
Goto Top
Hintergrund ist der Einsatz von Subversion bei Webentwicklung. Das Repository liegt auf dem Server. Der Checkout erfolgt lokal auf den Clientrechnern. Die Entwickler arbeiten mit den lokalen Dateien. Sobald eine Datei gespeichert wird, soll diese auf den Server in ein bestimmtes Verzeichnis kopiert werden. In diesem Verzeichnis liegen noch andere zusätzliche Daten, des es dem Entwickler dann ermöglichen, über den Browser die Website auf dem Server zu betrachten. Eine lokale Entwicklungsumgebung kann nicht realisiert werden, weil mehr benötigt wird als Apache, PHP etc. und auch lizenzrechtliche Aspekte dagegen sprechen. Aber auf dem Server sind die entsprechenden Komponenten verfügbar.

Der Entwickler soll nach dem Speichern nicht 30 sec oder länger warten müssen, bis er die Website mit den geänderten Daten auf dem Server aufrufen kann.

Zu Anfang hatte ich auch versucht, den Checkout von Repository auf dem Server über eine Netzlaufwerkfreigabe auch gleich wieder auf den Server zu legen und die Entwickler auf den Netzlaufwerken arbeiten zu lassen, aber das dauert zu lange, d.h. schlechte Performance.

Es sind viele kleine Dateien.
Member: miniversum
miniversum Jul 06, 2009 at 10:40:07 (UTC)
Goto Top
Und wofür brauchst du dann die Überwachung?
Stell doch einfach eine Batch zur Verfügung die nach jeder Änderung angeklickt wird. Eine dauerüberwachung ist da doch nicht notwendig?
Member: monaco05
monaco05 Jul 06, 2009 at 10:48:14 (UTC)
Goto Top
Dann müsste man als Entwickler bei jeder Änderung Speichern und zusätzlich manuell das Batchfile ausführen. Das kann auch schöner gehen.

Hab mittlerweile ein Progrämmchen gefunden, dass alles mitbringt was ich brauche:

FolderWatch

Es kann überwachen und gleichzeitig kopieren.

Damit ist der Thread gelöst.