Backup - Filecopy Systemdateien

  • Hi,

    ich arbeite momentan an einem Backup Tool für die Firma.
    Habe also testweise mal, den kompletten System32 Ordner im laufenden Betrieb kopiert.

    erst die Verzeichnisse eingelesen und erstellt. Danach die Dateien kopiert.

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here
    #include <Array.au3>

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

    $pfad = "C:\Windows\System32\"
    global $ordner = _RecursiveFileListToArray($pfad, '', 2)
    Global $dateien = _RecursiveFileListToArray($pfad, '', 1)
    _ArrayDisplay($dateien,"dateien")
    _ArrayDisplay($ordner,"ordner")

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

    for $a = 1 to $ordner[0]
    $ordner[$a] = Stringtrimleft($ordner[$a],19)
    ;msgbox(0,"",$ordner[$a])
    Dircreate(@scriptdir & "\est\" & $ordner[$a])
    Next
    msgbox(0,"","ordner done")
    for $i = 1 to $dateien[0]
    ;$dateien[$i] = StringTrimLeft($dateien[$i],19)
    ;msgbox(0,"",@scriptdir & "\est\" & StringTrimLeft($dateien[$i],20))

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

    FIlecopy($dateien[$i],@scriptdir & "\est\" & StringTrimLeft($dateien[$i],20))
    Next
    msgbox(0,"","Dateien done")

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

    Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    Local $hSearch, $sFile, $sReturn = ''
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Or $hSearch = -1 Then Return SetError(0, 0, $sReturn)
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
    If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
    $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
    ContinueLoop
    EndIf
    If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
    WEnd
    FileClose($hSearch)
    If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
    Return $sReturn
    EndFunc ;==>_RecursiveFileListToArray

    [/autoit]

    Folgendes Problem:

    [Blockierte Grafik: http://img713.imageshack.us/img713/9956/unbenanntrhm.png]

    Liegt das jetzt an versteckten Systemdateien oder an dem Zugriff vom System oder oder oder?
    Und wie kann ichs beheben?

  • Sowohl als auch. Windows sperrt, unter anderem aus Sicherheitsgründen, Dateien im Systemordner. Die bekommst nur im nicht laufenden Zustand also wenn z.b. mit Knopix ect. bootest und es dort dann kopierst.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Das System = 24/7. Also mit kurz ma aus, ist nicht ;)
    Daher muss ich irgendeine Möglichkeit finden.
    Ich kopiere ja nur und cutte nicht oder ändere was an den Files.

    Sowas wie Shadowcopy o.Ä ist nicht möglich?

  • Fals es Win Vista/Win 7 ist nimm die integrierte Funktion unter "Systemsteuerung" -> "Sichern und Wiederherstellen" damit kannst ein Systemabbild währen der Laufzeit erzeugen, auch auf externe Medien (USB,Netzlaufwerk usw.).

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Testsystem ja. Livesystem nein.
    Windows Server 2003.

    Daher bringt mir das nicht viel.
    Desweiteren will ich das Ganze schon selbst schreiben.
    Ein komplettes Image bringt mir nichts, ich brauche nur das Dateisystem, weil ich tägliche Vergleiche der Dateien und Ordner durchführen möchte.
    Prüfsumme/Size etc.
    Dahinter steckt schon Sinn und Zweck. ;)

    https://autoit.de/Shadow%20Copy

  • Da der Thread schon wieder auf Seite 3 ist, hau ich das Ding mal mit einer neuen Bemerkung hoch.

    Ich habe über Shadowcopy mithilfe des Windows Volumeschattenkopie Dienstes eine Schattenkopie des System32 gefertigt.
    Wenn ich diesmal C:\Windows\System32\ mit meiner Kopie vergleiche, ist die Kopie größer ! Mehr Ordner & Dateien.

    Wie kann das bitte möglich sein? Ich hatte angenommen mit dem Anzeigen der Eigenschaften mir die kompletten Dateien/Ordner incl versteckter Benutzer und/oder wie auch immer angezeigt werden.

  • Villeicht geht es aber mit System rechten. Ich habe i-wo noch son script rumfliegen der dateien als System startet, aber dafür muss man auch das program als Admin starten
    das script funktioniert mit den PsExec tools.
    Aber ich habe es nicht getestet ob es mit copy geht aber aufjedenfall hat dann dein programm mehr rechte.
    Ich habs mal rausgesucht:

    [autoit]

    #RequireAdmin
    $data= @ScriptDir&"\PsExec.exe"

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

    _Admin(@ScriptDir&"\DeinProgramm.exe")

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

    Func _Admin($Programmpfad)
    $startdatei=$data&" -i -d -s "&$Programmpfad
    Run($startdatei,@ScriptDir)
    EndFunc

    [/autoit]

    Ich bin mir nicht sicher aber ich glaube beim ersten start von PsExec muss etwas bestätigt werrden.

    Dort kannst du die PsExec.exe runterladen: http://technet.microsoft.com/de-de/sysinternals/bb897553.aspx
    Ich habs zwar angehangen aber ich weis selbs das man nicht jeden vertrauen sollte.

    Du musst einfach dann dein program mit dem script starten

    Ich hoffe es geht, vg

    mfg

    Dateien

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Ich bin mir nicht sicher aber ich glaube beim ersten start von PsExec muss etwas bestätigt werrden.

    oder man nutzt den Parameter "-accepteula" beim Aufruf des psexec/pslist/pskill u.s.w..

    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"