Backup sous Windows avec rsync (WSL)

rsync est sans doute le meilleur des outils de backup. Apprenez à l'utiliser sous Windows, grâce à une machine Debian tournant sous WSL

rsync on windows with WSL

Introduction

Accept reality and have a backup plan - Miley Cyrus

Je ne compte plus les fois où j'ai perdu des fichiers parce que j'étais trop paresseux pour mettre en place un backup digne de ce nom. Et chaque fois, je me disais que ça n'arriverait plus ...

Et un jour, j'ai trouvé la solution pour les ordinateurs mac et linux: rsync, un outil permettant de synchroniser le contenu de deux répertoires.

Si vous êtes là, c'est parce que vous cherchez désespérément une solution pour faire tourner rsync sous Windows. Donc vous savez probablement que rsync est :

  • efficace : il utilise la taille et les temps de modification des fichiers pour décider quels fichiers doivent être transférés ;
  • facile à utiliser : une commande suffit à synchroniser un répertoire entier ;
  • versatile : par exemple, vous pouvez faire des backups vers une machine distante, même en s'y loggant comme un utilisateur différent ;
  • sûr : je n'ai jamais eu le moindre problème avec, et vous pouvez tester ce qu'il va faire en utilisant le mode "dry run".

Le seul désavantage de cet outil, c'est qu'il n'est pas disponible sous Windows. Il y avait bien quelques solutions, comme faire tourner rsync sous cygwin. Mais j'ai eu des problèmes avec ça, comme la gestion des accents.

Une autre solution est d'installer une machine virtuelle Linux complète sur l'hôte windows, mais c'est vraiment un peu lourd, et un gâchis complet de temps et de ressources.

Heureusement, il est aujourd'hui possible de faire tourner une distribution Linux sous Windows 10 grâce à WSL (Windows Subsystem for Linux). Et, dans cette distribution, de faire tourner rsync.

Dans cet article, vous apprendrez à:

  • activer WSL et installer la distribution Linux de votre choix
  • utiliser rsync pour effectuer la sauvegarde d'un des répertoires de votre PC Windows vers un autre disque du même PC.

Pour cela, il vous faudra disposer d'un PC Windows 10 à jour.

Windows Subsystem for Linux (WSL)

WSL a été introduit avec Windows 10. Il permet aux développeurs de faire tourner un environnement GNU/Linux, incluant la plupart des outils de la ligne de commande, des utilitaires, et des applications, directement sous Windows. Et ce sans payer le coût d'une machine virtuelle.

WSL est vraiment simple, et bénéficie d'une excellente documentation Je ne souhaite pas la plagier, et je ne répéterai donc pas les instructions d'installation ici. Mais je vais quand même vous aider un peu à démarrer.

À un moment donné, il vous sera demandé d'activer WSL en ouvrant un powershell. Vous pouvez lancer le powershell en tapant la touche windows (démarrer), et en tapant

powershell

Un terminal s'ouvre. Pour activer WSL, vous devez faire tourner le powershell comme administrateur. Pour cela, tapez la ligne suivante dans votre terminal powershell :

Start-Process powershell -Verb runAs

Cela ouvre encore un autre powershell, où vous avez les droits d'administrateur. Dans celui-ci, vous pouvez suivre les instructions de Microsoft.

J'ai décidé d'installer la distribution Debian de Linux. Vous pouvez faire de même ou choisir Ubuntu si vous préférez. Si vous choisissez une autre distro, certaines des instructions ci-dessous ne marcheront probablement pas, mais je suppose que vous savez ce que vous faites (et notamment comment installer des packages dans votre distro favorite).

Aprèsl'initialisation de votre système Debian, nous pouvons nous lancer dans la configuration de rsync.

Installation de rsync

Pour installer rsync dans votre distribution Debian (ou Ubuntu), tapez :

sudo apt install rsync openssh-client

Maintenant, créez deux répertoires de test :

mkdir srcdir backup

Créez deux fichiers vides dans srcdir, et listez le contenu de ce répertoire :

touch srcdir/file1 srcdir/file2
ls srcdir

Pour synchroniser les contenus de srcdir et de backup, faites :

rsync -av srcdir/ backup/
sending incremental file list
./
file1
file2

sent 176 bytes  received 57 bytes  466.00 bytes/sec
total size is 0  speedup is 0.00

Enfin, listez le répertoire de destination, il contient les deux fichiers. Essayons de supprimer l'un de ces deux fichiers du répertoire source avant de relancer rsync :

rm srcdir/file2
rsync -av srcdir/ backup/

Nous voyons que backup/file2 existe toujours. Par défaut, rsync n'effacera rien. Pour l'autoriser à le faire, faites :

rsync -av --delete srcdir/ backup/
sending incremental file list
deleting file2

sent 82 bytes  received 21 bytes  206.00 bytes/sec
total size is 0  speedup is 0.00

Vous devriez maintenant avoir suffisamment confiance en cet outil pour l'utiliser sur vos données. Donc c'est parti !

Montage d'un disque externe

Mise en garde : avant de suivre les instructions ci-dessous, je vous conseille de faire un backup de vos données!

Bon je rigole ;-)

Je suppose que vous désirez faire une sauvegarde vers un disque externe. Donc commencez par connecter le disque à votre PC. Vous devriez voir le disque apparaître dans l'explorateur Windows.

Dans le terminal Linux, les disques montés sont dans /mnt . Listez-les :

ls /mnt
c  d  f  i

Ces lettres sont celles qui ont été assignées aux partitions de mon disque par Windows. C: est ma partition système.

Vous ne verrez probablement pas les partitions de votre disque externe ici. Le disque a été monté par Windows, mais pas par la machine Linux. Pour le monter, faites la chose suivante :

  • Dans l'explorateur Windows, cherchez la lettre associée à la partition de votre disque externe que vous souhaitez utiliser. Supposons que ce soit J:
  • Ensuite, créez le point de montage, et montez la partition sous Linux :
sudo mkdir /mnt/j
sudo mount -t drvfs J: /mnt/j

Vous pouvez maintenant voir le contenu de cet partition avec

ls /mnt/j

et vous pouvez aller à la racine de cette partition avec

cd /mnt/j

Sous Linux, on utilise cd pour changer de répertoire et ls pour lister le contenu d'un répertoire.

Démarrage du backup

Supposons que vous souhaitez faire un backup de C:\data\ vers J:\

Exécutez simplement la commande suivante. L'option -a est toujours nécessaire (marrant pour une option). C'est celle que tout le monde ou presque utilise, et vous pouvez vous référer au manuel de rsync pour plus d'informations. L'option -v vous permet d'obtenir un log détaillé. Et l'option -n est pour le dry run : rien ne se passera, nous sommes en train de tester. Enfin, j'utilise sudo car j'ai des erreurs de permission dans le cas contraire.

sudo rsync -avn /mnt/c/data/ /mnt/j/

Étudiez le log attentivement. Si tout vous semble correct, enlevez l'option -n.

Et maintenant?

Dans cet article, vous avez appris comment :

  • configurer WSL, le Windows Subsystem for Linux, pour installer une machine Debian.
  • utiliser rsync pour sauvegarder vos fichiers sur un disque externe.

Chaque fois que vous souhaitez faire un backup, vous devrez lancer la machine Debian et la commande rsync.

Il doit être possible d'automatiser ça. Sur une vraie machine Linux, j'utiliserais la crontab pour lancer rsync périodiquement. Mais sous Windows, je ne sais pas comment automatiser le lancement de la machine Debian.


N'hésitez pas à me donner votre avis dans les commentaires ! Je répondrai à toutes les questions.

Et si vous avez aimé cet article, vous pouvez souscrire à ma newsletter pour être prévenu lorsque j'en sortirai un nouveau. Pas plus d'un mail par semaine, promis!

Retour


Encore plus de data science et de machine learning !

Rejoignez ma mailing list pour plus de posts et du contenu exclusif:

Je ne partagerai jamais vos infos.
Partagez si vous aimez cet article: