contenu du fichier actions.csv
documents;sauvegardes/documents;7 photos;sauvegardes/photos;5
#!/bin/bash cat actions.csv | while read f do SOURCE=`echo $f | cut -f1 -d\;` DEST=`echo $f | cut -f2 -d\;` cp -Rf $SOURCE $DEST done
Vérifier son bon fonctionnement
créer un dossier “log” rajouter une ligne en fin de boucle dans tp1.sh qui enregistre la date courante dans un fichier nommé “$SOURCE.log” dans le dossiers log vérifier le bon fonctionnement
autour de la commande “cp -Rf $SOURCE $DEST” utilisez la commande “test” pour controler que les dossiers $SOURCE et $DEST existent avant de lancer la commande de copie. Si un des dossiers n'existe pas ecrire un message d'erreur dans un fichiers erreur.log dans le dossier log
dans un terminal :
construire la ligne seq pour aller de 6 à 0 par pas de 1 et dans ce sens (décroissant)
En bash la construction
((...))
permet une évaluation arithmétique.
Dans sa forme la plus simple,
a=$(( 5 + 3 ))
, exécutera le calcul 5 + 3, soit 8, et attribuera sa valeur à la variable a.
Un autre exemple : si la variable NBRE est égal à 7 alors
$(($NBRE-1))
sera égal à 6
nous voulons maintenir plusieurs jours de sauvegardes. Par exemple si nous supprimons une photo le jour n et que nous nous en apercevons le jour n+3 il nous faudra une sauvegarde datant de 3 jours.
Ce nombre de jours est indiqué dans la dernière colonne de notre fichier actions.csv.
Rajouter la ligne donnant la valeur de cette colonne à une variable nommée “NBRE”
il nous faut NBRE dossiers de sauvegarde dans chaque sous-dossier DEST
Nous avons vu en cours la boucle for (utilisé pour télécharger des photos de Cameron Diaz)
rappel :
for i in 1 2 3 4 5 do ..... done
A l'aide des commandes for, seq, test, mkdir et du calcul avec deux parenthèses construire une boucle
i allant de $NBRE-1 à 0 si $DEST/backup.$i n'existe pas créer un dossier $DEST/backup.$i fin si fin boucle
Mettre cette boucle juste après les affectations de variables dans tp1.sh
Vérifier que l'arborescence se construit bien comme souhaité
- L'objectif est d'avoir la sauvegarde la plus récente dans backup.0
Au sortir de la boucle précédente, modifier le script tp1.sh pour supprimer le dossier de sauvegarde le plus ancien (il faut utiliser le calcul avec la double parenthèse)
- A la suite de cela dans tp1.sh : Construire une boucle qui déplace backup.(NBRE-2) vers backup.(NBRE-1), backup.(NBRE-3) vers backup.(NBRE-2) … jusqu'a backup.0 vers backup.1
Une fois cette boucle créée, si vous lancez le script, vous n'aurez plus de backup.0 (il a été renommé en backup.1)
- Au sortir de cette boucle recréer le dossier backup.0
- Modifiez la commande cp pour sauvegarder dans le dossier backup.0
Si vous êtes arrivé là dans les temps du tp, vous pouvez vous documenter sur l'algorithme de Andrew Tridgell nommé rsync et proposer des pistes pour améliorer ce script.