Mam sytuację, w której deduplikacja danych w Server 2012 uszkodziła metadane - jak mogę skopiować te pliki ze starego repozytorium?


0

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

Odpowiedzi:


0

Poniżej działa całkiem dobrze;

Get-ChildItem -Recurse -File | 
Where-Object { $_.Attributes -match "ReparsePoint" } |
Foreach-Object {
    $currentFileName = $_.FullName
    $oldFileName = $currentFileName.replace("D:\", "F:\")
    if (Test-Path $oldFileName) {
        Copy-Item $oldFileName $currentFileName -Force
        Write-Host "Copied $oldFileName to $currentFileName"
    }        
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.