PowerShell copie avec robocopy

PowerShell copie avec robocopy

 

Pour copier l’ensemble des dossiers et fichiers d’un partage vers un nouveau serveur tout en conservant les droits sur les répertoires, vous pouvez utiliser PowerShell. Voici un script qui utilise la commande robocopy, qui est très efficace pour ce genre de tâche et permet de conserver les droits NTFS.

#Définir les chemins source et destination

$source = "\ancien_serveur\partage"
$destination = "\nouveau_serveur\partage"

#Créer le répertoire de destination s'il n'existe pas

if (-not (Test-Path -Path $destination)) {
New-Item -ItemType Directory -Path $destination
}

#Utiliser Robocopy pour copier les fichiers et les répertoires en conservant les droits NTFS

$robocopyOptions = "/MIR /COPYALL /R:3 /W:5 /LOG:C:\robocopy_log.txt /TEE"

#Exécuter Robocopy

robocopy $source $destination $robocopyOptions

Explications des options de robocopy :

  • /MIR : Miroir de l’arborescence, y compris les fichiers et les répertoires, supprimera les fichiers dans la destination s’ils sont supprimés dans la source.
  • /COPYALL : Copie toutes les informations de fichier, y compris les données, les attributs, les informations de propriétaire, d’audit et les ACL (droits NTFS).
  • /R:3 : Réessayer 3 fois en cas d’échec de copie d’un fichier.
  • /W:5 : Attendre 5 secondes entre chaque tentative.
  • /LOG:C:\robocopy_log.txt : Enregistrer la sortie de robocopy dans un fichier log.
  • /TEE : Afficher la sortie dans la console et la sauvegarder dans le fichier log.

Utilisation :

  1. Ouvrez PowerShell en tant qu’administrateur.
  2. Copiez le script ci-dessus dans votre éditeur PowerShell.
  3. Modifiez les variables $source et $destination avec les chemins appropriés.
  4. Exécutez le script.

Ce script va copier tout le contenu du partage réseau de l’ancien serveur vers le nouveau serveur tout en conservant les permissions sur les fichiers et répertoires. Assurez-vous d’avoir les droits nécessaires pour effectuer ces opérations sur les deux serveurs.