2014-09-16 14 views
9

Mamy dwa foldery:Jak utrzymać 2 foldery w synchronizacji przy użyciu skryptu PowerShell

  • FolderA: D: \ PowerShell \ Original
  • FolderB: D: \ PowerShell \ skopiować

Teraz chcę zachować synchronizację FolderA i FolderB (tj. Gdy użytkownik zmieni/doda/usunie plik/katalog w FolderA, to te same zmiany powinny się zdarzyć w FolderB).

Próbowałem:

$Date = Get-Date 
$Date2Str = $Date.ToString("yyyMMdd") 
$Files = gci "D:\Powershell\Original" 
ForEach ($File in $Files){ 
     $FileDate = $File.LastWriteTime 
     $CTDate2Str = $FileDate.ToString("yyyyMMdd") 
     if ($CTDate2Str -eq $Date2Str) { 
      copy-item "D:\Powershell\Original" "D:\Powershell\copy" -recurse  
      -ErrorVariable capturedErrors -ErrorAction SilentlyContinue; 
     } 
} 

Ale to wymagałoby podobnego skryptu powershell do usunięcia plików w FolderA i zmiany w FolderB.

Odpowiedz

22

Czy obejrzałeś Robocopy (Robustopy Copy)? Może być używany z PS i zapewnia to, czego szukasz, tj. Jest przeznaczony do niezawodnego kopiowania lub tworzenia kopii lustrzanych folderów (zmienia/dodaje/usuwa), po prostu wybierz odpowiednie opcje.

Robocopy sourceFolder destinationFolder /MIR /FFT /Z /XA:H /W:5

Opcja /MIR lusterka katalog źródłowy i katalog docelowy. Usunie pliki z miejsca docelowego, jeśli zostały usunięte u źródła.

Robocopy

+0

Dzięki człowiek, mamy rozwiązanie –

+0

Nie ma potrzeby, aby napisać kilka kodu Robocopy zrobi jsut w jednej linii Robocopy D: \ PowerShell \ Original D: \ PowerShell \ kopiowania/MIR –

+1

@Sunil Kumar Tak, jedna linia 'Robocopy sourceFolder destinationFolder/MIR/FFT/Z/XA: H/W: 5' Inne opcje są przeznaczone do ponowienia i restartowania dużych plików itp. – clD

Powiązane problemy