LINUX:ROBOCOPY


retour à la Sauvegarde


But

Le programme "robocopy.exe" de Microsoft est disponible sous Windows. C'est un programme utilisable en ligne de commande nettement plus puissant que "xcopy" ou "copy".

Il est normalement inclus dans le dossier système de Windows 10 "C:\Windows\System32". S'il n'est pas installé, il est en libre accès sur le site Microsoft dans les "Ressources kits" de ses serveurs. A cet URL de Microsoft https://docs.microsoft.com/fr-fr/windows-server/administration/windows-commands/robocopy, vous avez une notice explicative complète de tous les paramètres disponibles.


Utilisation locale

En mode le plus simple, on peut faire ses sauvegardes sur un disque dur externe. On pourrait le faire sur une clé USB mais je trouve ces médias plus fragiles. Voici un exemple de script à écrire dans fichier dont usuellement l'extension est ".bat". On suppose que le média externe a comme nom "H:". Dans cet exemple on sauve le contenu du répertoire "D:\hobby\genealogie".:


@echo off
d:
cd D:\hobby\
robocopy.exe genealogie  H:\genealogie /e /purge /fft /np /S /Z /R:2 /v /eta 
pause

Explications des options retenues:

  • /purge : la cible contiendra le même contenu que la source. On ne copie que ce qui a été modifié. Ce qui est en excédent, est éliminé.
  • /e : copie les sous-répertoires
  • /R:2 : En cas d'erreur d'accès à la cible, le nombre d'essais est limité à deux tentatives; il n'est pas illimité.
  • /Z : Si l'opération s'aborde, la prochaine opération continuera où a été interrompue.
  • /S : ne copie pas les répertoires vides
  • /eta : affiche l'état d'avancement du travail pour chaque fichier
  • /v : affichage détaillé


Utilisation vers un serveur SMB

Au lieu de copier ces fichiers vers un disque dur externe, on peut les copier vers un serveur SMB. Si cette machine distante a un OS Windows Professionnel ou Server, on y crée un répertoire de partage ayant les droits d'écriture pour l'utilisateur concerné. Si cette machine a un OS Linux, on doit y installer un serveur Samba (voir l'article "Samba: serveur de fichiers"). Dans l'exemple la machine se nomme "serverdb.home.dom", le partage "hobby" et l'utilisateur "adebast". On effectue une connexion au serveur grâce à la commande "net use" surtout si l'utilisateur qui fait cette opération, n'a pas les droits requis et/ou le mot de passe n'est pas le même que celui de l'utilisateur concerné.


@echo off
d:
cd D:\hobby\
net use \\serverdb.home.dom\hobby /user:adebast mot_de_passe_secret
robocopy.exe genealogie  \\serverdb.home.dom\hobby\genealogie /e /purge /fft /np /S /Z /R:2 /v /eta 
pause

Si on est en domaine active directory, il faut ajouter devant le nom d'utilisateur, le nom de domaine séparé du nom de l'utilisateur par un back-slach ("\").

Comme par principe le serveur doit toujours être à disposition, on peut intégrer ce script dans les tâches planifiées de la machine Windows source.

Notons que le fait d'avoir un mot de passe autre que celui de la machine source et qui n'est pas n'est pas archivé dans le système, met à l’abri notre partage et par la même occasion nos sauvegardes de l'action néfaste d'un cryptage non réversible d'un "ransomware". On peut vérifier ce non accès par défaut, par le fait que le mot de passe est systématiquement demandé lors de son accès.




retour à la Sauvegarde