
Etapes guidées : Créer un répertoire `mes_sauvegardes`, écrire un script `sauvegarde.sh` utilisant `cp` pour copier 2-3 fichiers (ex: `/etc/hosts`, un fichier de votre `/home`), rendre le script exécutable et le tester
Suivez nos étapes pour créer un répertoire de sauvegarde, écrire un script shell (sauvegarde.sh) avec cp, le rendre exécutable (chmod) et le tester. Scripting Linux facile.
Votre premier script de sauvegarde : de l'idée à l'exécution
Passons maintenant à la réalisation concrète de notre script de sauvegarde. Ce guide détaillé vous accompagnera à chaque étape, de la préparation de l'espace de stockage à l'exécution finale de votre script. L'objectif est de vous rendre autonome dans la création de scripts simples mais utiles pour automatiser des tâches courantes.
Nous allons suivre une progression logique : d'abord, créer un endroit sûr pour stocker nos sauvegardes. Ensuite, nous rédigerons le script lui-même, en y intégrant les commandes nécessaires. Puis, nous nous assurerons que le système reconnaît notre fichier comme un programme exécutable. Enfin, nous lancerons le script pour vérifier son bon fonctionnement.
Etape 1 : Préparer le terrain avec un répertoire de sauvegarde
Avant d'écrire le script, il nous faut un emplacement pour stocker les fichiers sauvegardés. Nous allons créer un répertoire nommé mes_sauvegardes directement dans votre répertoire personnel (~). Ouvrez votre terminal et tapez la commande suivante :
mkdir ~/mes_sauvegardesCette commande crée le répertoire mes_sauvegardes. Vous pouvez vérifier sa création en listant le contenu de votre répertoire personnel :
ls ~Vous devriez voir mes_sauvegardes apparaître dans la liste. C'est dans ce dossier que notre script copiera les fichiers.
Etape 2 : Ecrire le script `sauvegarde.sh`
Maintenant, créons notre script. Nous allons l'appeler sauvegarde.sh. Le suffixe .sh est une convention pour indiquer qu'il s'agit d'un script shell, bien que ce ne soit pas techniquement obligatoire pour son exécution. Utilisons l'éditeur nano pour créer et modifier ce fichier. Vous pouvez le créer où vous le souhaitez, par exemple, dans votre répertoire personnel :
nano ~/sauvegarde.shCela ouvre nano avec un fichier vide. Voici le contenu que nous allons y mettre. Ce script copiera deux fichiers : /etc/hosts et un fichier d'exemple que nous allons supposer exister dans votre répertoire personnel, nommé mon_fichier_important.txt. Si ce dernier n'existe pas, créez-le avec touch ~/mon_fichier_important.txt avant d'exécuter le script, ou adaptez le nom du fichier à un fichier existant que vous souhaitez sauvegarder.
#!/bin/bash
# Ceci est un script simple pour sauvegarder des fichiers importants
# Définir le répertoire de destination pour les sauvegardes
DEST_DIR="~/mes_sauvegardes"
# Créer le répertoire de destination s'il n'existe pas déjà (optionnel, mais bonne pratique)
# L'option -p crée les répertoires parents si besoin et ne renvoie pas d'erreur si le répertoire existe déjà.
mkdir -p "${DEST_DIR}"
# Fichiers à sauvegarder (adaptez cette liste à vos besoins)
FICHIER1="/etc/hosts"
FICHIER2="~/mon_fichier_important.txt" # Assurez-vous que ce fichier existe ou modifiez le chemin
# Afficher un message de début
echo "Début de la sauvegarde..."
# Copier le premier fichier
cp "${FICHIER1}" "${DEST_DIR}/hosts_backup"
echo "Copie de ${FICHIER1} vers ${DEST_DIR}/hosts_backup effectuée."
# Copier le second fichier
# Note: l'utilisation de ~ dans une variable comme $FICHIER2 n'est pas toujours expansée correctement par cp.
# Il est plus sûr d'utiliser $HOME ou le chemin absolu.
# Pour cet exemple, nous allons le faire de manière plus robuste.
cp "$HOME/mon_fichier_important.txt" "${DEST_DIR}/mon_fichier_important_backup.txt"
echo "Copie de $HOME/mon_fichier_important.txt vers ${DEST_DIR}/mon_fichier_important_backup.txt effectuée."
# Afficher un message de fin
echo "Sauvegarde terminée ! Les fichiers sont dans ${DEST_DIR}."
Quelques explications sur ce script :
#!/bin/bash: C'est le "shebang". Il indique au système quel interpréteur utiliser pour exécuter ce script (ici, Bash).- Les lignes commençant par
#sont des commentaires, ignorés par l'interpréteur mais utiles pour la compréhension. DEST_DIR="~/mes_sauvegardes": Nous définissons une variable pour le répertoire de destination. L'utilisation de~dans une variable n'est pas toujours interprétée comme le répertoire personnel par toutes les commandes. Il est plus sûr d'utiliser$HOMEou de résoudre le chemin si on l'utilise ailleurs, comme nous le faisons avecmkdir -p "${DEST_DIR}"oùmkdirgère bien le~, ou pourcpoù nous utilisons$HOMEexplicitement. Pour la variableDEST_DIR, simkdirne gérait pas~, il faudrait écrireDEST_DIR="$HOME/mes_sauvegardes".mkdir -p "${DEST_DIR}": Crée le répertoire de destination s'il n'existe pas. L'option-pévite une erreur si le répertoire existe déjà et crée les répertoires parents si nécessaire.FICHIER1et la gestion deFICHIER2: Variables pour les chemins des fichiers sources.echo: Affiche des messages à l'utilisateur.cp "${SOURCE}" "${DESTINATION}": La commande de copie. Les guillemets autour des variables ("${VARIABLE}") sont une bonne pratique pour gérer les noms de fichiers contenant des espaces ou des caractères spéciaux.
Après avoir collé ou tapé ce contenu dans nano, sauvegardez et quittez : Ctrl+X, puis O (ou Y), et Entrée.
Etape 3 : Rendre le script exécutable
Par défaut, un nouveau fichier texte n'a pas la permission d'être exécuté comme un programme. Nous devons explicitement accorder cette permission à notre script sauvegarde.sh. Pour ce faire, utilisez la commande chmod (change mode) avec l'option +x (ajouter l'exécution) :
chmod +x ~/sauvegarde.shMaintenant, si vous listez les détails du fichier avec ls -l ~/sauvegarde.sh, vous devriez voir un 'x' dans les permissions, indiquant qu'il est exécutable.
Etape 4 : Tester le script
Tout est prêt pour le test ! Assurez-vous d'avoir créé le fichier ~/mon_fichier_important.txt si ce n'est pas déjà fait (touch ~/mon_fichier_important.txt). Pour exécuter votre script, naviguez jusqu'au répertoire où il se trouve (si vous n'y êtes pas déjà) ou appelez-le avec son chemin complet. Si vous l'avez créé dans votre répertoire personnel, la commande est :
~/sauvegarde.shSi vous êtes dans le répertoire ~, vous pouvez aussi l'exécuter avec :
./sauvegarde.shLe ./ indique au shell de chercher le script dans le répertoire courant.
Si tout se passe bien, vous devriez voir les messages de votre script s'afficher :
Début de la sauvegarde...
Copie de /etc/hosts vers ~/mes_sauvegardes/hosts_backup effectuée.
Copie de /home/VOTRE_UTILISATEUR/mon_fichier_important.txt vers ~/mes_sauvegardes/mon_fichier_important_backup.txt effectuée.
Sauvegarde terminée ! Les fichiers sont dans ~/mes_sauvegardes.Vérifiez ensuite le contenu du répertoire ~/mes_sauvegardes :
ls -l ~/mes_sauvegardesVous devriez y trouver les fichiers hosts_backup et mon_fichier_important_backup.txt.
Félicitations ! Vous avez écrit et exécuté avec succès votre premier script shell pour automatiser une tâche de sauvegarde. C'est un excellent point de départ pour explorer des scripts plus complexes et des techniques d'automatisation plus avancées.