Mit dem Programm "Shadow Copy" von runtime oder "HoboCopy" kann der Inhalt von einem Ordner zu einem anderen Ordner kopiert werden.


Problemstellung:
Sollte ein Programm eine Datei gesperrt haben, z.B Outlook die psd-Datei, so wird diese nicht kopiert oder noch schlimmer der Kopiervorgang wird abgebrochen.

Lösung:
HoboCopy und Shadow Copy verwenden den Dienst Volumenschattencopy (VSS). Dieser wird bei bedarf von den beiden Programmen gestartet.

Mögliche Probleme:

Wenn ein TrueCrypt-Container in das Widows-System eingebunden ist kann ab Vista kommt es Schattenkopie erstellt werden
Hobocopy Fehler-Meldungen:
- There was a COM failure 0x8004230f - .\HoboCopy.cpp (349)
- DoSnapshotSet failed.
Dann hilft nur den TrueCrypt-Contaier auszuhängen, eine Kopie von der gesperrten Datei in einen temp-Ordner zu machen, TC-Container wieder einbinden und die nicht gesperrte Kopie sichern.

 

 

 


 

ShadowCopy

Vorteil:
- Läuft auch unter Windows 2003 & 2008 ohne update irgendwecher Bibiliotheken.

Nachteil (bei CMD-Line Start mit Parametern):
- Nur eine bestimmte Datei oder Dateigruppen mit WildCard * können mit einen Programmaufruf per Parameter kopiert werden.
- Nach dem Kopieren öffnet sich ein Dialogfenster für 5 Sekunden.

Syntax:
shadowcopy <Datei> <Ziel> [/s] [/j] [/i][/y] [/r]

<Datei> Alle Dateien im Ordner xyz (z.B. c:\zusichern\*.*) oder nur eine bestimmte (z.B. c:\foo.txt) oder mit Platzhalter (z.B. c:\zusichern\*.docx) kopieren.
<Ziel> Das  Zielverzeichnis. (z.B. d:\sicherung\)
/s Unterverzeichnisse rekursiv kopieren     
/j Junctions kopieren
/i Fehler beim Kopieren ignorieren     
/y Vorhandene Dateien ohne Nachfrage überschreiben     
/r Schreibgeschützte Dateien überschreiben

 

 


HoboCopy

Vorteil:
- mehrere Datei-Namen können per Parameter übergeben werden

Nachteil:
- Läuft unter Windows 2003 & 2008 nur wenn die Visual C++-Laufzeitdateien und Betriebssystemkomponenten installiert und auf dem aktuellen Stand sind.
Lösung: Das Packet vcredist auf SourceForge.net installieren und das Problem ist behoben. Weitere Lösungen sind unter CraigBlog nachzulesen.

 

Syntaxhobocopy [/statefile=DATEI] [/verbosity=LEVEL] [/full | /incremental] [/clear] [/skipdenied] [/y] [/simulate] [/recursive] <Quelle> <Ziel> [<Datei> [<Datei> [ ... ]]


/statefile Datei in der die Informationen über den aktuellen Kopiervorgang gespeichert werden.
Diese Datei wird erforderlich wenn Inkrementelles Kopieren (/incremental) zu einem späteren Zeitpunkt durchgeführt werden soll.


/verbosity (default ist 2) Gibt an, wie viele Informationen HoboCopy ausgibt
0 - fast keine Informationen ausgegeben
1 - Nur über Fehler Informationen
2 - Fehler und Warnungen werden ausgegeben
3 - Fehler, Warnungen und einige Statusinformationen werdenausgegeben
4 - Viele diagnostische Informationen werden ausgegeben

/full Füht eine vollständige Kopie aus. Unabhängig vom Änderungsdatum.

/incremental Führt ein inkrementelles Kopieren aus. Nur Dateien welche sich seit der letzten Vollkopie geändert haben werden kopiert. Die Angabe von /statefile ist hier zwingend Notwendig

/clear - Rekursiv wird das Zielverzeichnis vor dem Kopiervorgang gelöscht.
HoboCopy wird zur Bestätigung  des Löschvorgangs auffordern. Mit dem Schalter /y kann dies unterbunden werden.

/Skipdenied Sollte HoboCopy nicht das Recht haben eine Datei zu kopieren bricht es den kompletten Kopiervorgang ab. Mit desem Schalter wird die Datei einfach übersprungen und HoboCopy kopiert den Rest.

/y keine Eingabeaufforderung an den Benutzer. Alles wird ohne Nachfragen durchgeführt ! Auch das löschen mit /clear.

/simulate Simuliert das Kopieren nur. Nicht wird wirklich kopiert.

/ r /recursive Kopiert alle Unterverzeichnisse (auch leere) mit.

<Quelle> Das Quell-Verzeichnis zum kopieren.
<Ziel> Das  Zielverzeichnis.
<Datei> (defaualt *.*) Eine Datei (z.B. foo.txt) oder mit Platzhalter (z.B. *.txt) kopieren.

 


Reinitialisierung des Volume Shadow Copy Service VSS

Sollte die Funktionalität des Volume Shadow Copy Service (VSS Service) nicht mehr gegeben sein, kann dies durch eine fehlerhafte Veränderung der Registrierung passieren.
Ein Ausführen des "vssadmin" in der CMD-Shell mit den Parameter “list writers” (Syntax: "vssadmin list writers") ergibt dann einen Timeout-Fehlermeldung.
Dieses Problem kann damit behoben werden, wenn die beteiligten Komponenten des VSS Service erneut registriert werden:
Folgendes in eine Batch-Datei kopien und als Administrator ausführen:

rem folgendes steht in der "VSS_reinit.bat"
rem -------------------------------------------------
cd %windir%\system32
Net stop vss
Net stop swprv
regsvr32 ole32.dll
regsvr32 vss_ps.dll
Vssvc /Register
regsvr32 /i swprv.dll
regsvr32 /i eventcls.dll
regsvr32 stdprov.dll
IF NOT EXIST vssui.dll GOTO NOVSSUI
regsvr32 vssui.dll
:NOVSSUI
IF NOT EXIST vss_ps.dll GOTO NOVSSPS
regsvr32 vss_ps.dll
:NOVSSPS
regsvr32 msxml.dll
regsvr32 msxml3.dll
IF NOT EXIST msxml4.dll GOTO NOMSXML4
regsvr32 msxml4.dll
:NOMSXML4
Net start swprv
Net start vss
rem -------------------------------------------------

Batchdatei: Download

2. Nachdem die Registrierung fehlerfrei durchgelaufen ist, erneut "vssadmin list writers" ausführen

3. Diesmal sollten alle installierten VSS Writers aufgelistet und fehlerfrei sein