CodeGym /Cours /Docker SELF /Sauvegarde avec rsync et scp

Sauvegarde avec rsync et scp

Docker SELF
Niveau 6 , Leçon 5
Disponible

Sauvegarde avec rsync et scp

1. Pourquoi la sauvegarde est-elle importante ?

Aujourd'hui, on va parler d'une des tâches les plus importantes pour tous ceux qui bossent dans le monde de l'IT et de la programmation : sauvegarder ses données. Si tu as déjà perdu des données importantes à cause d'une panne de disque ou d'une erreur, tu sais à quel point c'est critique. Et si ça ne t'est jamais arrivé, on est là pour prévenir les dégâts !

Imagine : tu bosses sur un projet depuis des mois, et un beau jour, ton disque dur décide de faire grève. Ouais, c'est aussi frustrant qu'oublier un point-virgule à la fin d'une requête SQL, mais mille fois pire. Les systèmes ne sont pas fiables, les humains font des erreurs, et les fichiers disparaissent. La sauvegarde te permet d'être prêt à affronter ces mauvaises surprises.

Sous Linux, il existe plusieurs outils puissants pour sauvegarder. Aujourd'hui, on va se concentrer sur deux d'entre eux : rsync et scp.


2. Commande rsync : un outil rapide et malin pour copier des données

rsync est l'un des outils les plus populaires pour copier et synchroniser des données. Sa principale force réside dans sa rapidité et son efficacité. Au lieu de tout copier, rsync ne copie que les fichiers modifiés. Cela en fait un choix idéal pour effectuer des sauvegardes régulières de grandes quantités de données.

Syntaxe de rsync

Voici le format de base de la commande :

rsync [options] source destination

Où :

  • source — le chemin vers le fichier ou dossier que tu veux copier.
  • destination — l'endroit où tu veux envoyer ces données.

Options principales et leur fonction

Voici quelques options souvent utilisées :

  • -a (archive) : inclut la copie de tous les métadonnées (permissions, timestamps, etc.).
  • -v (verbose) : active une sortie détaillée pour que tu puisses voir ce qui se passe.
  • --progress : montre la progression du transfert (super utile pour les gros fichiers).
  • --delete : supprime côté destination les fichiers qui ne sont plus présents côté source. Pratique pour une synchronisation complète.
  • -z (compress) : compresse les données avant de les transmettre, ce qui accélère le processus (particulièrement important pour les opérations en réseau).

Exemple : copie de données locales

Créons un répertoire /backup pour stocker les sauvegardes.

mkdir /backup

Copions tout le contenu du répertoire /home dans /backup :

rsync -av /home /backup

Décomposons cet exemple :

  • -a préserve la structure et les permissions des fichiers.
  • -v fournit des informations sur le processus en cours.

Si tu relances la commande, elle ne copiera que les fichiers modifiés ou nouveaux.

Exemple : sauvegarde distante

Maintenant, supposons que tu veuilles envoyer une sauvegarde vers un serveur distant. Pour cela, rsync prend en charge l'utilisation de SSH.

rsync -av /backup user@remote_server:/remote_backup

Où :

  • user — le nom d'utilisateur sur le serveur distant.
  • remote_server — l'adresse de ton serveur distant (par exemple, une adresse IP ou un nom de domaine).
  • /remote_backup — le chemin sur le serveur où tu veux sauvegarder les données.

Si tu as une clé SSH pour l'autorisation, le transfert sera encore plus simple (et sécurisé).


3. La commande scp : simple et efficace

scp (Secure Copy Protocol) est un outil pour copier des fichiers entre une machine locale et une machine distante. C’est un peu plus simple que rsync, et convient aux cas où une synchronisation complète n’est pas nécessaire.

Syntaxe de scp

Voici le format de base de la commande :

scp [options] source destination

Où :

  • source — chemin vers le fichier que vous voulez copier.
  • destination — adresse où il doit être envoyé.

Options principales et leurs fonctions

Quelques options utiles :

  • -r : copie récursive pour les dossiers.
  • -C : compresse les fichiers avant le transfert.
  • -P : spécifie un port SSH si différent du port par défaut (22).

Exemple : copier un fichier sur une machine distante

Vous voulez transférer des fichiers depuis votre ordinateur local vers un serveur. Supposons que le fichier s'appelle document.txt.

scp document.txt user@remote_server:/remote_folder

Si le fichier est dans le dossier /home/user/documents, la commande ressemblera à ceci :

scp /home/user/documents/document.txt user@remote_server:/remote_folder

Le fichier sera alors disponible sur la machine distante dans le dossier /remote_folder.

Exemple : copier des fichiers depuis un serveur vers la machine locale

Le processus fonctionne dans l'autre sens :

scp user@remote_server:/remote_folder/document.txt /home/user/documents

Ainsi, le fichier document.txt se retrouvera dans votre dossier local.


4. Différences entre rsync et scp

Bien que les deux commandes permettent de copier des fichiers, elles ont leurs propres particularités.

Particularité rsync scp
Vitesse Seuls les fichiers modifiés, plus rapide pour de gros volumes Copie tout, même si les fichiers n'ont pas changé
Synchronisation Support complet de la synchronisation Ne supporte pas la synchronisation
Compression des données Option disponible -z Option disponible -C
Simplicité d'utilisation Plus complexe à configurer Interface simple

Donc, si tu veux juste transférer rapidement un fichier, utilise scp. Si tu as besoin de synchronisations régulières ou de gérer de gros volumes de données, alors rsync est le choix évident.


5. Exemple concret : configuration d'une sauvegarde

Voici un exercice pratique : tu veux configurer un processus complet de sauvegarde de ton projet sur un serveur distant.

  1. Supposons que tes fichiers de projet sont stockés dans le dossier /home/user/project. Tu veux qu'ils soient sauvegardés sur le serveur backup.server.com dans le dossier /backups/project.

  2. Pour que la copie soit plus rapide, on va utiliser rsync.

Configuration du script de sauvegarde

Crée un fichier nommé backup.sh :

#!/bin/bash

SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"

# Effectue une sauvegarde avec rsync
rsync -av --delete "$SOURCE" "$DESTINATION"

# Affiche un message de fin
echo "Sauvegarde terminée !"

Rends le fichier exécutable :

chmod +x backup.sh

Tu peux maintenant exécuter ce script manuellement :

./backup.sh

Ou l'ajouter à cron pour une exécution automatique (on parlera de cron plus tard dans le cours).


6. Erreurs typiques et comment les éviter

  1. Chemins incorrects dans la ligne de commande. Si tu indiques un mauvais chemin vers les fichiers, rsync ou scp ne copieront rien. Utilise les commandes ls ou pwd pour vérifier la validité des chemins.

  2. Absence de clé d'autorisation. Si tu utilises SSH sans clé configurée, un mot de passe te sera demandé à chaque fois. Configure des clés SSH pour simplifier le processus.

  3. Interruption de la sauvegarde. Si le réseau est instable, rsync finalisera quand même le transfert au prochain lancement. Par contre, avec scp, il faudra tout recommencer.

Avec rsync et scp, tu peux copier et synchroniser tes données en toute confiance, que ce soit sur ton ordinateur local ou des serveurs distants. Ces outils sont tes compagnons fiables quand il s’agit de protéger des fichiers importants.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION