Volumenschattenkopie (VSS) unter Win10

  • Moin zusammen,


    hat obiges (VSS unter Win10) schon mal jemand gemacht/hin bekommen?

    Also über AutoIt eine VSS erstellen und dann darauf zugreifen und ggf. danach wieder frei zu geben?

    Oder hat jemand eine alternative Lösung dafür (ohne irgendein kostenpflichtiges zusätzliches Programm)?


    Wir haben dies bisher unter XP und Win 7 genutzt um Dateien die im Zugriff sind etc. zu kopieren zu können für Backups.

    Leider funktioniert das unter Win10 nicht mehr.


    Die Person, die dies bisher gemacht hat ist nur noch minimal bei uns im Einsatz.

    Realisiert wurde dies über die vscsc.exe, die über eine batch ausgeführt wurde, die über ein autoit-Programm aufgerufen wird.


    Ich habe zwar das gefunden um eins zu erstellen:

    Code
    wmic shadowcopy call create Volume=c:\

    Habs aber bisher nicht getestet, da ich keinen Weg gefuden habe wie ich dann darauf zugriefen kann. Bisher war dies immer bei uns das Laufwerk "X:".


    Bzw. weiß jemand wie man so etwas über WBADMIN realisieren kann (mit Statusabfrage)?

    Meine Entwürfe sehen aktuell (im groben) so aus:

  • Also gelernt habe ich schon mal (durch Fehlermeldungen direkt in der CMD):


    - Ordner zu sichern ist in ?unserer? Windows 10 Version nicht enthalten, nur das ganze Laufwek ist möglich

    --> Runwait('C:\Windows\System32\wbadmin.exe start backup -quiet -vssCopy –backupTarget:D: -include:C:')

    - wbadmin recovery ist in ?unserer? Windows 10 Version nicht enthalten

    --> In den Dropdowns sind die "Backups" enthalten

    Nun habe ich 2 Probleme:

    - Ich muss auf einzelne Ordner des Backups zugreifen können.

    --> Weiß jemand ob man irgendwie auf diese "Backups" zugreifen kann?

    - Diese Kommandozeile lässt sich nur als gesonderte cmd in der cmd erfolgreich ausführen, ansonsten passiert nix

    --> Mache ich da irgendwas falsch?

  • Oder hat jemand eine alternative Lösung dafür (ohne irgendein kostenpflichtiges zusätzliches Programm)?

    Zwei meiner Hauptbereiche sind Datensicherheit und Datensicherung. Besser gesagt, das war mal so, vor laaanger, langer Zeit. Ein bisschen ist noch hängen geblieben, z. B. dass eine solche Anforderung wie die deine weitaus komplexer ist, als mal eben etwas in die Kommandozeile einzutippen. Deshalb die Frage, ist es dir wichtig, das alles selbst zu erstellen, oder wäre auch nicht-kostenpflichtige zusätzliche Software eine Lösung?


    Bernd.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Sagen wir es so: Generell wäre es schöner es selbst zu schreiben (ging ja bis Win7 mit den Win Tools für die VSS), da wir dies in ein Programm einbetten was immer (nach bestimmten Bedingungen) ausgeführt wird.


    Das Problem ist, das dabei Dateien mit gesichert werden müssen, die einen Zugriffsschutz haben (werden von Diensten etc. verwendet, Datenbanken etc.). Das ging halt bisher mit der VSS gut.

    Bekloppter weise ging ja die reine Sicherung (wenn ich die Befehle direkt in die CMD manuell eingegeben habe oder die cmd-Datei über die cmd ausgeführt habe), nur der Zugriff auf diese nicht.

    Das Recovery ist (warum auch immer), nicht in der "Windowsversion enthalten" (evtl. nur bei Serverversionen?).


    Wichtig dabei ist halt gewisse Ordner zu sichern, da diese bei einem Festplattenausfall zurückgespielt werden müssen. Dies muss im Einklang mit dem oben beschriebenen Vorgang passieren und wir sichern in 2 Orte.

  • Dann rück mal ein paar Infos raus. 8o


    Und falls du dich jetzt fragst, welche: Alles was relevant ist! Denk daran, machst du es den Helfern leicht, dann wird dir geholfen. Kein Glaskugel-Raten :Glaskugel:


    Bernd.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Schau mal nach ob du das nicht in Windows-Features irgendwo aktiviert bekommst. Vielleicht ist es ja nur standardmäßig deaktiviert?

    Leider nein. Ich denke das dies entweder wirklich über die Windowsversion zur Verfügung gestellt wird oder innerhalb der wbadmin.exe

    Edit: Zitat was ich gefuden habe: "Der Restore Befehl funktioniert nur in der Server Version und nicht unter Windows 10"


    @Prof. Bernd:

    Es wird jeden Tag eine Datensicherung gemacht nach ein paar definierten Abläufen. Am Ende wird dann ein Programm von uns gestartet, welches unter anderem ein Backup anlegt.

    Einige Dienste laufen aber weiter und greifen auf Datenbanken und andere Dateien zu, so das man diese nicht einfach kopieren kann.


    Bisher wurde dazu halt eine VSS () gemacht und der aktuelle Stand gesichert.

    AutoIt
    ...

    CMD:

    Code
    C:\path\vscsc.exe -exec=C:\path\backup.exe C: > C:\path\log\vscs_start.txt

    Als Fehler erhalten wir bei der Ausführung:

    • Offizieller Beitrag

    Mal ganz dumme Frage: Arbeitet ihr rund um die Uhr oder warum erfolgen Zugriffe während der Datensicherung?

    Ich erledige das alles zwischen 23:00 und 5:00. Zur Sicherung wird die Datenbank dann erst kopiert dann neu indexiert und all der unnütze Schattenmüll entsorgt. Die nun frisch gereinigte DB wird gepackt und die ZIP auf den Backupspeicher geschoben, während die saubere Kopie nun die Original DB ersetzt. (alles natürlich nur bei Erfolg der vorherigen Operation). In 20 Jahren ist meine DB von anfangs ca. 400 MB auf jetzt knapp 2 GB angewachsen aber unverändert schnell. Und seit ich vor etwa 5 Jahren die tägliche Reindexierung eingeführt habe, ist nie wieder ein DB-Problem aufgetreten.

  • Die Zugriffe können wir selber nicht steuern, das kommt vom Hersteller einer unserer verwendeten Software.

    Die Arbeitszeiten sind sehr Unterschiedlich.


    Edit: Ich habe nun folgendes (manuell) hin bekommen:


    In 2 Use-Cases aufgeteilt:

    • Backup erstellen
      1. Backup von C: erstellen (wbadmin start backup -quiet -vssCopy –backupTarget:D: -include:C:)
      2. Das Älteste Backup löschen, wenn mind. 3 *.vhdx Dateien vorhanden sind (wbadmin delete backup -deleteoldest -quiet)
    • Backup einspielen
      1. Backup-Datei ausführen (D:\WindowsImageBackup\PCNAME\Backup 2020-03-31 124454\xyz.vhdx) -> Fehlermeldung ist normal, kann ignoriert werden
      2. im diskmgmt.msc taucht das Backup als "zweites Laufwerk C:" nur ohne Laufwerksbuchstaben auf (Virtuell)
      3. Diesem weist man nun einen Laufwerksbuchstaben zu (z.B.: X:)
      4. Von nun an könnte man Dateien/Ordner kopieren
      5. In diskmgmt.msc das Virtuelle Laufwerk wieder löschen (Es muss erst der Laufwerksbuchstabe wieder entfernt werden und dann "virtuelle Festplatte trennen", sonst ist es ein Einwegbackup XD)
      6. Danach ist diese Backupdatei auf diesem Wege scheinbar nicht mehr zugänglich - Teste ich noch

    Bleibt das Problem der Umsetzung in Autoit.

  • Dann rück mal ein paar Infos raus. 8o

    Und falls du dich jetzt fragst, welche: Alles was relevant ist! Denk daran, machst du es den Helfern leicht, dann wird dir geholfen. Kein Glaskugel-Raten :Glaskugel:

    - Ordner zu sichern ist in ?unserer? Windows 10 Version nicht enthalten, nur das ganze Laufwek ist möglich

    ...

    - wbadmin recovery ist in ?unserer? Windows 10 Version nicht enthalten

    Das Recovery ist (warum auch immer), nicht in der "Windowsversion enthalten" (evtl. nur bei Serverversionen?).


    Wie sieht es aus mit "eurer" Windows-Version, Workstation, Server? Welche Architektur, x32 oder x64? Dann schreibst du von vscsc.exe, dann von Wbadmin. Welche Version von vscsc benutzt du? 2003, XP, Vista, 2008, 7? Zu vscsc habe ich gefunden: "As of March 2011, it supports Windows XP, Windows Server 2003 for x86 and Windows Vista, Windows Server 2008 and Windows 7 for both x86/amd64." ==> Vielleicht gibts eine Version für Win 10, aber die zu finden ist dein Job. 8o


    Manche der Funktionen von Wbadmin z. B. "Sicherung aktivieren" haben verschiedene Aufrufe, je nach Betriebssystem. Da ich weder mit vscsc, noch mit wbadmin gearbeitet habe: Welches Format haben denn die resultierenden Backup-Dateien? Wie willst du auf einzelen Ordner zugreifen?

    - Ich muss auf einzelne Ordner des Backups zugreifen können.

    --> Weiß jemand ob man irgendwie auf diese "Backups" zugreifen kann?


    Könnte nicht BugFix' Beitrag eher eine Lösung für dich sein?


    Bernd.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Professor Bernd :

    Windows 10 Pro 64Bit

    Es wird die aktuellste vscsc.exe verwendet, es gibt leider keine für Win10.


    Siehe meine "neuen" Ansätze einen Beitrag über deinem.


    Problem scheint zu sein, das die cmd, wenn ich sie über autoit starte, irgendwie anders ist.

    Erläuterung:

    CMD über Startmenü kennt wbadmin (hier nur mal einen kurzen Testaufruf):


    CMD über autoit kennt wbadmin (auch mit absolutem Pfad) gar nicht:


    Kennt einer den Unterschied?

    Ich habe auch schon probiert den Link aus dem Startmenü per shellexecute auszuführen, leider der Gleiche Effekt.


    Über Lazarus (FreePascal) funktionierts.

    • Offizieller Beitrag

    Hallo,


    wir haben das so gelöst, dass wir alle 3 Stunden in der Hauptzeit einen geplanten Task via Gruppenrichtlinie (Windows 10 Prof) eingerichtet haben, die dann

    Code
    shadowcopy call create Volume='C:\'


    ausführt. Das funktioniert auch recht gut und gab bisher auch keine Probleme.


  • Na so oft brauchen wir es nicht.

    Das Backup funktioniert ja, wenn ich es über die Lazarus Anwendung laufen lasse.

    Mich wundert das nur bei der CMD aus Autoit das Problem auftritt "wbadmin konnte nicht gefunden werden".

    Ich würde das gerne in Autoit umsetzen, um in einer einheitlichen Entwicklungsumgebung zu bleiben.


    Und der Lazarus Code sieht nun nicht so sehr anders aus:

    Code
    program Backup;
    {$mode Delphi}{$H+}
    uses
      ShellAPI;
    
    {$R *.res}
    
    begin
      ShellExecute(0, nil, PChar('cmd'), PChar('/c wbadmin.exe start backup -quiet -vssCopy -backupTarget:D: -include:C:'), nil, 1);
    end.                

    Und damit brauchen wir keine Tasks etc. und wird wie gewohnt ausgeführt, nur halt die ganze Festplatte anstatt nur einzelne Ordner. Das stört aber nicht.

  • Generell läuft der Recoverypart nun:



    Dennoch würde mich interessieren warum der Backup Part über autoit nicht funktioniert bzw. ob es ggf. noch einen anderen Aufruf für cmd gibt, der das richtig umsetzt.

    KAnn es hierbei Probleme geben, weil das autoit programm in 32Bit kompiliert wurde und Das Win 10 Pro 64Bit ist?

  • Hallo Moombas

    KAnn es hierbei Probleme geben, weil das autoit programm in 32Bit kompiliert wurde und Das Win 10 Pro 64Bit ist?

    Ach jo. Da hast du deine Lösung. Aber nicht mal wegen kompilieren, sondern wegen der x86 Variante von Autoit allgemein. Müsste eigentlich aus SciTE das gleiche Problem sein. Benutze mal die Anweisung: #AutoIt3Wrapper_UseX64=Y

  • Nun kennt CMD zumindest schonmal auch wieder wbadmin etc.


    Jetzt sagt er mir jedoch das die Syntax nicht stimmen würde -.-

    Kopiere ich sie 1:1 aus dem Programm in die geöffnete cmd funktioniert es jedoch. Was will Windoof nun schon wieder?


    Edit:

    Ich glaube mein Schwein pfeifft... Hab den Befehl im Program 1:1 nochmal abgetippt anstatt ihn zu kopieren - läuft! No Comment!


    Danke an alle.