Alle Dateiänderungen bei Änderungen kontinuierlich von einem Ordner in einen anderen kopieren (Windows)

Alle Dateiänderungen bei Änderungen kontinuierlich von einem Ordner in einen anderen kopieren (Windows)

Ich arbeite an einer umfangreichen Java-Webanwendung, die einer zentralen Versionskontrolle unterliegt. Die Quelldateien werden jedoch zum Erstellen und Ausführen des eigentlichen Servers verwendet, der dann während der Ausführung alle Dateien, an denen ich arbeite, in ein zufälliges temporäres Verzeichnis kopiert.

Mein Problem besteht darin, dass ich entweder diese riesige Anwendung neu erstellen muss, um alle Änderungen an meinen Dateien anzuzeigen, oder alle meine Änderungen nachverfolgen und die geänderten Dateien zurück an ihren Quellspeicherort kopieren muss, bevor ich sie wieder zur Quellcodeverwaltung übergebe.

Meine Frage lautet: Gibt es ein Befehlszeilenskript, das ich ausführen kann, um sämtliche Änderungen im Quellordner zu überwachen und geänderte Dateien automatisch in den temporären Ordner X zu kopieren?

Die Idee besteht darin, die menschliche Fehlerquelle zu beseitigen, die durch die manuelle Eindämmung des Zwei-Standorte-Problems entsteht.

Antwort1

Ich schlage vorKostenloseFileSync, das anscheinend die Möglichkeit bietet, ein Skript zu erstellen, das die beiden Ordner alle paar Sekunden automatisch synchronisiert. Ich habe es noch nicht selbst ausprobiert, aber es sieht vielversprechend aus.

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Antwort2

Haben Sie über die Verwendung von RoboCopy nachgedacht?http://ss64.com/nt/robocopy.html

RoboCopy kann so eingestellt werden, dass die Daten nach Ablauf einer festgelegten Zeitspanne und/oder nach Vorliegen einer bestimmten Anzahl von Änderungen an den Datensätzen kopiert werden.

/MON:n: Quelle überwachen; erneut ausführen, wenn mehr als n Änderungen festgestellt wurden.
/MOT:m: Quelle überwachen; bei Änderungen in m Minuten erneut ausführen.

Antwort3

Vielleicht möchten Sie auch einen Blick auf die (Alterung) werfenDeltaCopyClient und Server. Im Grunde ist es ein Linux-ähnlichesrsyncImplementierung für Windows, skriptfähig (mit dem Windows-Scheduler, falls gewünscht) und sein Hauptvorteil ist, dassnur die geänderten Teileeiner geänderten Datei (ja, Datei!) übertragen. Dies kann bei großen Projekten viel Datenverkehr sparen. Ein Nachteil ist natürlich, dass vorher eine Dateiliste erstellt und übertragen werden muss.

Darüber hinaus gibt es einige (kleine) Einschränkungen:

  • Da es sich um ältere Software handelt, müssen Sie möglicherweise ersetzencygwin1.dllauf Windows-Rechnern. (Nur wenn Sie Dateien zwischen Linux und Windows synchronisieren. Es verwendetcygwinals zugrunde liegendes Framework, das die 16-Bit-Unicode/UTF-8-Dateinamenkonvertierung damals nicht richtig handhabte.)
  • Es ist nicht gerade benutzerfreundlich, Sie sollten sich Linux ansehen.rsync-Manpageum sein volles Potenzial auszuschöpfen.
  • Unter Windows sind ein »Client«- und ein »Server«-Rechner erforderlich.
  • Wenn der Server eine Linux-Maschine ist, müssen Sie Folgendes einrichten:rsyncdkorrekt.
  • Keine Unterstützung für die Volumeschattenkopie von Windows (wird jedoch möglicherweise nicht benötigt).

Nun, es hat auch Vorteile (deshalb benutze ich es immer noch täglich):

  • Vollständig kompatibel mit *NIX rsync und rsyncd. Ein bewährtes, bekanntes und hocheffizientes Synchronisierungssystem. Immer noch.
  • Hält den Overhead gering: Nur die geänderten Daten (auch innerhalb von Dateien!) werden über das Netzwerk transportiert. Das ist auch sehr praktisch, wenn Sie von zu Hause aus arbeiten oder über langsame Verbindungen auf Ihren Server zugreifen.
  • Offenbar ausfallsicher. Ich habe im Laufe der Jahre viele, viele Gigabyte an Daten per rsync synchronisiert, und beim »Patchen« der Zieldateien ist kein einziger Fehler aufgetreten. Auch wenn ich das Konzept zunächst ein wenig beunruhigend fand.
  • Ich verwende DeltyCopy immer noch, um täglich Dateien von Windows-Rechnern sowohl auf einem zentralen Linux-Server als auch auf einem Windows 2003-Server zu sichern. Funktioniert bei korrekter Installation äußerst gut und sicher.

Nun, das bleibt Ihnen überlassen. Viel Spaß! (Und erzählen Sie uns von FreeFileSync!)

Antwort4

Ein nützlicher Befehl ist xcopy /m src\* dest. Dadurch werden alle Dateien von src nach dest kopiert undlöschtdas Archivbit auf allen Quelldateien. Immer wenn Sie eine Quelldatei berühren, setzt Windows automatisch das Archivbit. Beim nächsten Ausführen xcopy /mwerden nur die geänderten Dateien kopiert.

Wenn Sie es kontinuierlich ausführen möchten, schreiben Sie ein kleines Skript wie

@echo off
echo Watching for changes to %1 ...
:top
xcopy /m /y %1\* %2 | find /v "File(s) copied"
timeout /t 2 >nul
goto :top

verwandte Informationen