Když vám nejede zálohování, nebo prostě jen tak kvůli kdoví čemu :-) není špatné si vytvořit ručně shadow copy (stínovou kopii svazku) nějakého diskového oddílu. Potřebujete k tomu jenom nástroj diskshadow a případně PowerShell a příkazovou řádku, pokud nemáte diskshadow na stanicích.
Když už to píšu u sebe na bezpečnostním blogu, tak upozorňuju, že shadow copy máte nejspíš na všech stanicích, kde je ve výchozím stavu zapnuta funkce system restore, neboli system protection. Operační systém vám sám od sebe dělá shadow copy před každou instalací programů i aktualizací. Dá se to potom použít k průzkumu různě napadených počítačů, protože útočníci si obvykle neuvědomují a i když smažou nějaké staré soubory, nebo logy, možná je ještě najdete v nějaké shadow copy.
Jak vylistovat všechny kopie svazku
Můžete to udělat buď pomocí diskshadow, nebo pomocí PowerShell:
diskshadow
list shadows all
gwmi Win32_ShadowCopy |
select *,
@{ n = 'DriveLetter' ; e = { (gwmi -Query ('SELECT * FROM Win32_Volume WHERE DeviceId = "{0}"' -f $_.VolumeName.Replace('\', '\\'))).DriveLetter } }
gwmi Win32_ShadowStorage |
select *,
@{ n = 'DriveLetter' ; e = { ([wmi] $_.Volume).DriveLetter } },
@{ n = 'DiffVolumeLetter' ; e = { ([wmi] $_.DiffVolume).DriveLetter } }
V tabulce Win32_ShadowCopy je seznam všech kopií, které jsou k dispozici na všech vašich oddílech. V tabulce Win32_ShadowStorage jsou konfigurace úložišť shadow copy rozdílových kopií pro každý oddíl, který to má vůbec nějak definováno - tedy na který disk se to ukládá (obvykle na ten stejný oddíl do složky System Volume Information) a maximální omezení na velikost, pokud nějaké existuje.
Jak si stínovou kopii svazku vytvořit
Opět ji vytvoříte buď pomocí diskshadow, nebo přes WMI a PowerShell:
diskshadow
set context persistent
begin backup
add volume c:
end backup
([wmiclass] 'Win32_ShadowCopy').Create('C:\', 'ClientAccessible')
A to hlavní, jak se k ní vůbec dostat?
Je úplně jedno, jestli je client accessible, nebo není. Jestli je to produkt shadow copies for shared folders, nebo je to výsledek system protection (system restore). Pokud znáte její device object ID (deviceObjectId), tedy něco ve formátu \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy38, tak se k jejímu obsahu dostanete.
Můžete zkusit několik cest:
diskshadow
list shadows all
expose {guidguid-guid-guid-guid-guidguidguid} R:\
mklink /D c:\mojekopie "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy38\"
U té druhé metody s mkdir a directory junction (parameter /J), nebo symbolic link (parametr /D), nesmíte zapomenout na konci na zpětné lomítko (backslash). Pokud to tam nedáte, sice se to namapuje, ale dostanete při přístupu chybovou hlášku "is not accessible, the parameter is incorrect".
Mazání shadow copy na závěr
Samozřejmě jdou smazat přes diskpart, nebo také přes WMI, kde použijete metodu .Delete().