Obnova dat ze Shadow Copy pomocí skriptu (třeba robocopy)

Řešil jsem docela průšvihovou úlohu – skriptem (robocopy) obnovit hejno souborů ze zálohy. Jediná záloha, co existovala, byly Windowsí Shadow Copies. Takže jsem potřeboval jednotlivé Shadow Copy snapshoty „nějak namapovat“, aby k nim mohlo přistupovat robocopy. Nakonec se povedlo. Tento článeček je vodítkem (také obsahuje PowerShell skript, který to do jisté míry automatizuje).

Vytvoření linku na Shadow Copy

Výpis všech snapshotů pro daný diskový svazek (zde disk D:):

vssadmin list shadows /for=D:

Vytvoření linku na konkrétní snapshot (verzi Shadow Copy):

mklink /d c:\sc \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy192\
  • musí se pustit z CommandShellu (z Powershellu nejde přímo, ale přes cmd /c)
  • cesta (\\?\GLOBALROOT\…) se zobrazuje ve výpisu vssadmin
  • na konci cesty ke snapshotu musí být zpětné lomítko, jinak při otevření linku zahlásí „acess denied“

Smazání linku

V CommandShellu:

rmdir c:\sc

V PowerShellu:

cmd /c rmdir c:\sc

Pokud byla přilinkována složka, nepoužívejte DEL, protože odstraní nejen link, ale také všechny soubory v cílové (přilinkované) složce.

Automatizace pomocí skriptu

Následující skript pro PowerShell vezme všechny verze Shadow Copy a postupně je nalinkuje na C:\sc#

$shadowcopies = Get-WMIObject Win32_ShadowCopy
$i = 1
"**************"
foreach($shadowcopy in $shadowcopies){
    "link –> c:\sc" + $i
    "time –> " + $shadowcopy.InstallDate
    $command = "cmd /c mklink /d c:\sc"+$i+" "+$shadowcopy.DeviceObject+"\"
    Invoke-Expression -Command:$command
    "**************"
    $i++
}

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*