Mam dwa dyski - dysk D: i dysk F :. Oba są dyskami podłączonymi lokalnie do maszyny Server 2012. dysk F jest starszym magazynem danych migrujących na nowy dysk (D), ponieważ jest większy.
Deduplikacja danych została włączona na dysku D przed synchronizacją plików od F do D.
Robocopy / MIR uszkodził magazyn deduplikacji na dysku F, wymagając ode mnie ponownej synchronizacji plików ze starego dysku D. (w szczególności te, które mają atrybut APL (Archive, ReparsePoint, SparseFile).
Problem polega na tym, że niektóre pliki na F zostały zapisane od czasu przejścia na nową wersję - próbowałem napisać skrypt, aby zlokalizować te pliki i skopiować je, ale chciałbym to zrobić lepiej!
Obecnie mam skrypt, który wyszukuje pliki z atrybutem „ReparsePoint” i zapisuje je w pliku tekstowym
function Recurse($path) {
$fc = new-object -com scripting.filesystemobject
$folder = $fc.getfolder($path)
foreach ($i in $folder.files) { $i | select Path }
foreach ($i in $folder.subfolders) {
$i | select Path
if ( (get-item $i.path).Attributes.ToString().Contains("ReparsePoint") -
eq $false) {
Recurse($i.path)
}
}
}
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$outputlist = Recurse($scriptPath) | Out-File -Filepath .\filelist.txt
Następnie skopiowałbym z repozytorium źródłowego na podstawie tej listy. Idealnie byłoby, gdyby był to pojedynczy skrypt!
Jakiś guru skryptów chce pomóc?
Twoje zdrowie
źródło