Ordner Syncrionisation

  • Hallo,

    ich bin momentan dabei, ein Backup Tool für Laptops in Autoit zu erstellen..

    VPN Erkennung, Funktionsaufruf bei Idletime funktionieren ganz gut.. allerdings habe ich keine Ahnung wie ich weiter vorgehen soll.

    Angekommen folgendes: ich möchte alle Daten von C:\Users\Test\Desktop auf U:\Backup verschieben (allerdings nur, wenn diese verändert wurden)

    wie schreibe ich das am besten ?

    Edit: Gerne würde ich dazu auch Logfiles ausgeben lassen..

  • Das mit dem Vergleichen würde ich eventuell nach Änderungsdatum vergleichen..
    Du speicherst alle Dateien in einen Ordner, in dem deine Backups liegen, der Ordner könnte Beispielsweise das Format "DatumUhrzeit" haben, sprich [170320141525]. Dann vergleichst du alle Dateien die Gesichert werden sollen nach dem Änderungsdatum. Ist eine Datei später geändert worden, wird sie Gesichert, wenn nicht, wird sie Übersprungen.

    Hab so mal eine Ähnliche Aufgabe bewältigt, schau dir dazu vielleicht mal FileGetTime() an,... ;)

  • Meine Lösung sieht jetzt momentan so aus :

    [autoit]


    Global $DirPath = "U:"
    Global $DirBackupDoc = "" & $DirPath & "Backup\Dokumente"
    Global $DirDoc = @UserProfileDir & "\Documents"

    [/autoit][autoit][/autoit][autoit]

    [...]

    [/autoit][autoit][/autoit][autoit]

    RunWait(@ComSpec & " /c "& "robocopy "& $DirDoc & " " & $DirBackupDoc & " /MIR /R:3 /W:1 /LOG+:U:\BackupLog\Documents.txt /NP ", "" ,@SW_SHOW)

    [/autoit][autoit][/autoit][autoit][/autoit]

    gerne würde ich folgende Parameter einfügen:

    /XD C:\users\Documents/Eigene Bilder /XD C:\users\Documents/Eigene Musik C:\users\Documents/Eigene Videos

    sprich: /XD $DirDoc & "Eigene Bilder

    wie schreibe ich das genau ? bekomme dauernt nur fehlermeldungen weil die formatierung nicht stimmt vermute ich einmal..

  • ... /XD "Ordner1" "Ordner2"

    bzw.

    ... /XD "' & $DirDoc & '\Eigene Bilder"'

    [autoit]

    Global $DirPath = "U:"
    Global $DirBackupDoc = $DirPath & "\Backup\Dokumente"
    Global $DirDoc = @UserProfileDir & "\Documents"

    [/autoit][autoit][/autoit][autoit]

    [...]

    [/autoit][autoit][/autoit][autoit]

    RunWait(@ComSpec & " /c robocopy " & $DirDoc & " " & $DirBackupDoc & ' /MIR /R:3 /W:1 /LOG+:U:\BackupLog\Documents.txt /NP /XD "' & $DirDoc & '\Eigene Bilder"', "" ,@SW_SHOW)

    [/autoit]

    Info: Ich habe mal die einzelnen \ in einfache Anführungszeichen geschrieben, damit das Forum diese richtig anzeigt !

    Die Comspec-Geschichte kannst Du bei Robocopy auch weg lassen. Wenn Robocopy im ScriptDir liegt, einfach:

    [autoit]

    RunWait("Robocopy " & $DirDoc & " " & $DirBackupDoc & ' /MIR /R:3 /W:1 /LOG+:U:\BackupLog\Documents.txt /NP /XD "' & $DirDoc & '\Eigene Bilder"', "" ,@SW_SHOW)

    [/autoit]

    Edit: Nochmal die Robocopy-Befehlszeile berichtigt. Ohne Gewähr !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    6 Mal editiert, zuletzt von Micha_he (20. März 2014 um 14:36)

  • Vielen Dank,

    allerdings immernoch folgendes im Log :

    2014/03/20 14:55:44 FEHLER 5 (0x00000005) Quellverzeichnis wird berprft C:\Users\schienag\Documents\Eigene Bilder\
    Zugriff verweigert

    1 Sekunden wird gewartet... Wiederholung...
    2014/03/20 14:55:45 FEHLER 5 (0x00000005) Quellverzeichnis wird berprft C:\Users\benutzer\Documents\Eigene Bilder\
    Zugriff verweigert

    1 Sekunden wird gewartet... Wiederholung...
    2014/03/20 14:55:46 FEHLER 5 (0x00000005) Quellverzeichnis wird berprft C:\Users\benutzer\Documents\Eigene Bilder\
    Zugriff verweigert

    1 Sekunden wird gewartet... Wiederholung...
    2014/03/20 14:55:47 FEHLER 5 (0x00000005) Quellverzeichnis wird berprft C:\Users\benutzer\Documents\Eigene Bilder\
    Zugriff verweigert


    Fehler: Die maximale Anzahl von Wiederholungsversuchen wurde berschritten.


    Versucht immernoch aus Eigene Bilder zu kopieren..

  • Deine Robocopy-Version kennt den Parameter /XD ?

    Dann kann es daran liegen, das Robocopy den Ordner samt Unterordnern immer vollständig liest. Unabhängig davon, ob der Teil Später auch kopiert werden soll. Und so wie es den Anschein hat, passen dort die Rechte nicht oder ein Programm hat Dateien im Zugriff.
    Ich habe schon gesehen, das z.B. CorelDraw Unterverzeichnisse anlegt, wo nur der User Zugriff drauf hat. Läuft dann das Script unter einem, Backup-Admin, kommt es zu identischen Fehlern !

    Ich verwende immer die Parameter '/R:0 /W:0', damit Scripte an solchen Datein nicht unnötig lange hängen bleiben.

    Schau einfach mal unabhängig von den Fehlern im Log, ob der Ordner ohne den ausgeschlossenen Unterordner kopiert wurde. Robocopy sollte das Spiegeln trotz des Logfile-Eintrages, ja fertig durchführen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Ja, Script funktioniert ohne weiteres aber fands halt nicht schön im Logfile.. Werde dann wohl auch mit /R&/W:0 arbeiten müssen....

    Vielen Dank trotzdem :- )

    edit:

    Muss an der Formatierung liegen.. mit

    [autoit]

    RunWait("Robocopy " & $DirDoc & " " & $DirBackupDoc & ' /MIR /R:3 /W:1 /XD "C:\Users\schienag\Documents\Eigene Bilder" /LOG+:U:\BackupLog\Documents.txt /NP' , "" ,@SW_SHOW)

    [/autoit]

    funktionierts..

    editeditedit: es funktioniert!!!

    [autoit]

    RunWait("Robocopy " & $DirDoc & " " & $DirBackupDoc & ' /MIR /R:3 /W:1 /XD "'&$DirDoc &'Eigene Bilder" /XD "'&$DirDoc &'Eigene Musik" /XD "'&$DirDoc &'Eigene Videos" /LOG+:U:\BackupLog\Documents.txt /NP' , "" ,@SW_SHOW)

    [/autoit]

    Einmal editiert, zuletzt von KCChris (20. März 2014 um 15:23)

  • Noch eine Frage...

    Ist es möglich per Robocopy mehrere Logfiles (Für jede Ausführung ein eigenes mit Datum etc) zu erstellen oder muss ich das über Autoit machen ? (z.b. über die aktuelle uhrzeit als Logfiledateiname

  • versuch mal:

    [autoit]

    RunWait("Robocopy " & $DirDoc & " " & $DirBackupDoc & ' /MIR /R:3 /W:1 /XD "'&$DirDoc &'Eigene Bilder" /XD "'&$DirDoc &'Eigene Musik" /XD "'&$DirDoc &'Eigene Videos" /LOG+:U:\BackupLog\%date%.txt /NP' , "" ,@SW_SHOW)

    [/autoit]

    Edit:
    Oder besser (nimmt h/m/s mit):

    [autoit]

    RunWait("Robocopy " & $DirDoc & " " & $DirBackupDoc & ' /MIR /R:3 /W:1 /XD "'&$DirDoc &'Eigene Bilder" /XD "'&$DirDoc &'Eigene Musik" /XD "'&$DirDoc &'Eigene Videos" /LOG+:U:\BackupLog\%date%%time:~0,2%%time:~3,2%%time:~6,2%.txt /NP' , "" ,@SW_SHOW)

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (20. März 2014 um 16:03)