free2k
Goto Top

2 Wege Ordner Syncronisierung per Batch

Gesucht wird eine Batch um Ordner zu Sync.

Hallo,

ich habe folgendes Problem bzw. suche ein Batch Skript.

Ich würde gerne einen Ordner den ich Lokal auf meinem PC habe und auf meinem USB Stick miteinandere Syncronisieren.

Sprich, beide Ordner sollen wenn ich eine Batch Datei Ausführe anschließen Dateien kopieren/löschen/überschreiben und das per 2 WegeSystem.
Ich habe Bereits Software gefunden die das macht jedoch leider nur Umständlich per GUI und auch nur dort mit 3-4 Klicks.
Aber das will ich automatisieren z.B. das beim Anmelden bzw Abmelden automatisch das Skript läuft.

Kennt einer Alternativen ? Leider Hilft mir hier RoboCopy oder Synctools von Microsoft nicht weiter da die dieses nicht bieten.


ps. Das gleiche würde ich gerne auf einem Benutzer Account auf einem Terminal-Server machen.

Ich bin auf einem Terminal-Server eingelogged dort gibt es ein Netzlaufwerk z.B. P. Diese würde ich gerne per über die Freigabe möglichkeiten bei RemoteDesktop z.B. auf \\tsclient\c\LokaleKopie mit einem Lokalen Ordner Syncronisieren damit auch dort die Daten immer Aktuell gehalten werden. Und ich auf Offline Dateien verändern kann. Vielleicht mach ich es auch einfach nur zu Kompliziert und einer kennt einen Einfache Lösung. ( ps. das Notebook ist also Domaincomputer im Netzwerk und gearbeitet wird nur von zuhause aus per VPN Verbindung. )


Grüße
Marcel

Content-ID: 82452

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

Ausgedruckt am: 26.11.2024 um 11:11 Uhr

miniversum
miniversum 06.03.2008 um 12:40:05 Uhr
Goto Top
Per robocopy müste das gehn. Der Parameter /MIR sorge dabei für eine Spiegelung des Zielverzeichnisses mit der Quelle.

Nur mit Boardmitteln geht es auch. Hier im Forum wurde mal diese Batch gepostet:
@echo off

set src=F:\quelle
set dst=F:\ziel
set log="F:\SyncLog %date%.txt"  

echo Log vom: %Date% %Time% >> "%log%"  
echo Dateien werden kopiert: >> "%log%"  

if %src:~-1%==\ set src=%src:~0,-1%
xcopy "%src%" "%dst%" /c /s /e /r /v /d /y /i /h /f /o /x >> "%log%"  

echo Dateien werden geloescht: >> "%log%"  

for %%L in (d e f g h i j k l m n o p q r s t u v w x y z) do if not exist %%L:\NUL set LWdst=%%L:
Subst %LWdst% "%dst%"  
for /R %LWdst%\ %%i in ("*.*") do @FC "%%i" "%src%%%~pnxi" >nul || del /s /q "%%i" && echo %%i >> "%log%"  
Subst %LWdst% /D

Auch hier mus man halt Quelle und Ziel angeben. Willman kein Logfile haben kann man ja die betreffenden Zeilen abändern.

miniversum
free2k
free2k 06.03.2008 um 12:44:18 Uhr
Goto Top
leider klappt das so nicht. Mit diesem Befehlt habe ich es getestet. Wenn nun einer in dem Zielverzeichniss etwas verändert oder erstellt.
wird dieses einfach Überschrieben bzw was zuviel ist gelöscht. Leider nur ein 1x Weg Sync. Und der Bringt mir nichts face-smile Da auch noch andere Leute mit den Lokalen Daten Arbeitet.

Grüße
Marcel
miniversum
miniversum 06.03.2008 um 13:44:29 Uhr
Goto Top
Aber ist das wie du es willst nicht ein Prinzipielles Problem bei Syncronisation?
Woher will das Programm den wissen was es kopieren udn was löschen soll?
Annahme: Ich möchte die folgenden beiden Verzeischnisse synkronisieren.
Verzeichnis1:
Datei1.txt
Ordner1
Datei2.txt

Verzeichnis2:
Datei1.txt
Ordner2
Datei3.txt

Was soll jetzt passieren?
Soll Ordner1 in Verzeichnis 2 kopiert werden oder soll er im Verzeichnis1 gelöscht werden?
Wenn du sowas willst dann müßtest du eine Verzeichnisüberwachung haben die dir speichtert was wann gemacht wurde mit den Dateien um zu wissen ob z.B. Ordner1 zuletzt erstellt wurde oder gelöscht.
free2k
free2k 06.03.2008 um 13:56:34 Uhr
Goto Top
also eine 2 Wege Sync läuft anderes face-smile

Verzeichnis1 würde danach aus ausehen

Datei1.txt
Ordner1
Ordner2
Datei2.txt
Datei3.txt

also im Prinzip würden die sich ergänzen. Falls es jetzt zu überschneidungen kommt... z.b. im Verzeichniss2 würde die Datei1.txt verändert ( d.h. laut Datum ist Sie neuer ) würde diese im Verzeichniss1 überschrieben werden sodas dieser wieder Aktuell ist.

Und Genau das macht eine 2 Wege Synconisierung face-smile ( SmallSync ist shareware das Programm kann dies leider nur ein GUI und keine möglichkeit per batch )

Hoffe das kann man Verstehen face-smile

Grüße
Marcel
miniversum
miniversum 06.03.2008 um 15:08:04 Uhr
Goto Top
Ok also willst du eigentlich garkein löschen (weil das im Eingangsposting steht)?

Das ist recht einfach.
xcopy /d c:\verz1 d:\verz2
xcopy /d d:\verz2 c:\verz1

ok?
free2k
free2k 06.03.2008 um 18:50:19 Uhr
Goto Top
naja doch face-smile Wenn einer halt was löscht soll es bei dem anderen auch gelöscht werden face-smile Beide Verzeichnisse sollte stehts den selben inhalt besitzen face-smile

Ist wohl etwas schwerer alles als gedacht face-sad


Grüße
Marcel
miniversum
miniversum 07.03.2008 um 10:11:53 Uhr
Goto Top
Und nun komme ich auf mein obiges Beispiel zurück.
Stell dir vor in beiden Verzeihnissen würde es Ordner1 geben und einer löscht ihn in Verzeichnis2. Dann wäre danach der richtige Schritt ja ihn auch im Verzeichnis1 zu löschen.

Ich hoffe du erkennst die zwickmühle. Durch reines Vergleichen der Verzeichnisse ist es nicht möglich herauszubekommen ob in dem einen was neu erstellt wurde oder im andern gelöscht. Und welche Aktion daraus folgen soll, löschen im einen oder kopieren ins andere.

Also entweder nur kopieren ohne löschen (siehe die Lösung mit xcopy /D), oder 1 Wege (wie im ersten Posting mit robocopy /MIR), oder eben eine Art Überwachung die protokolliert was dann gemacht wurde und anhand dieser dann weiter verfahren.
free2k
free2k 12.03.2008 um 08:59:04 Uhr
Goto Top
ok das ist ein argument face-smile ich werde mal ein wenig Ausprobieren wie ich das jetzt am einfachsten realisiere...

danke schonmal für die Antwort.

Grüße
Marcel