Powershell Copier-Élément, mais ne copie que les fichiers modifiés
Je suis en train de répéter à travers un répertoire et copier de A à B. Qui peut être réalisé avec les éléments suivants:
Copy-Item C:\MyTest C:\MyTest2 –recurse
Je veux être en mesure de bien que de copier seulement les nouveaux fichiers (ceux qui existent dans src, mais pas dest) et aussi ne copie que les fichiers qui ont peut-être changé basé sur une vérification CRC et pas un datetime timbre.
$file = "c:\scripts"
param
(
$file
)
$algo = [System.Security.Cryptography.HashAlgorithm]::Create("MD5")
$stream = New-Object System.IO.FileStream($file, [System.IO.FileMode]::Open)
$md5StringBuilder = New-Object System.Text.StringBuilder
$algo.ComputeHash($stream) | `
% { [void] $md5StringBuilder.Append($_.ToString("x2")) }
$md5StringBuilder.ToString()
$stream.Dispose()
Ce code me donne un contrôle CRC sur un fichier en particulier...je ne suis pas sûr de savoir comment mettre les deux scripts ensemble pour vraiment me donner ce dont j'ai besoin. Aussi, je ne sais pas si la vérification CRC ci-dessus est en fait la façon correcte de le faire.
Quelqu'un a une idée?
- Ma première question serait avez-vous regardé juste avec Robocopy? Vous êtes vraiment réinventer très bien conçu roue ici.
Vous devez vous connecter pour publier un commentaire.
À la fois de ceux qui sont des réponses solides pour powershell, mais il serait sans doute beaucoup plus facile de simplement tirer parti de Robocopy (MS Fourni de copie robuste application).
permettrait de réaliser la même chose.
Voici quelques lignes directrices comment vous pouvez votre script pour être plus facile à gérer.
Conver le script original comme un filtre.
Suffit alors de filtrer tous les fichiers qui sont mis à jour et de les copier.
Ou vous pouvez créer une autre fonction qui génère le sous-répertoire
J'ai trouvé une solution...mais pas sûr que c'est le meilleur d'un point de vue des performances: