[BASH/RSYNC] Script bash ne fonctionne pas

Bonjour,

Je m’essaye, laborieusement, au script bash. Pour automatiser mes sauvegardes, je suis parti d’un petit script qui me paraissait simple, publié dans une revue de grande diffusion… qui ne fonctionne pas correctement (le script, pas la revue). J’ai corrigé quelques petit problèmes. Mais cale lamentablement sur la suite.

La sauvegarde se fait par deux petits scripts, l’un hebdomadaire, qui fait une sauvegarde complète le vendredi (fonctionne correctement), l’autre faisant une sauvegarde incrémentale tout les autres jours de la semaine. Le samedi, toutes les sauvegardes incrémentales de la semaine précédente sont effacées.

Voici le script

[code]#!/bin/bash

echo ‘### Sauvegarde incrémentale journalière’

Récupération du nom du jour courant et du jour précédent

today=$(date +%A)
yesterday=$(date --date=“yesterday” +%A)

Récupération du nom du répertoire contenant la sauvegarde de la veille

linked_src="/media/Sauvegarde/sauv_jpm2/incrementale/$yesterday"
if [ today = ‘samedi’ ]; then
linked_src="/media/Sauvegarde/sauv_jpm2/complete"
# Éffacement des sauvegardes incrémentales
for rep in lundi mardi mercredi jeudi samedi dimanche
do
echo "Éffacement de /media/Sauvegarde/sauv_jpm2/incrementale/$rep"
rm -rf /media/Sauvegarde/sauv_jpm2/incrementale/$rep/*
done
fi

rsync -arHu --delete --progress --stats --link-dest=$linked_src /home/jp/ /media/Sauvegarde/sauv_jpm2/incrementale/$today [/code]

Et voici le lancement

[code]bash -x sauvegarde_daily.sh

  • echo ‘### Sauvegarde incrémentale journalière’

Sauvegarde incrémentale journalière

++ date +%A

  • today=samedi
    ++ date --date=yesterday +%A
  • yesterday=vendredi
  • linked_src=/media/Sauvegarde/sauv_jpm2/incrementale/vendredi
  • ‘[’ today = samedi ‘]’
  • rsync -arHu --delete --progress --stats --link-dest=/media/Sauvegarde/sauv_jpm2/incrementale/vendredi /home/jp/ /media/Sauvegarde/sauv_jpm2/incrementale/samedi
    sending incremental file list
    –link-dest arg does not exist: /media/Sauvegarde/sauv_jpm2/incrementale/vendredi
    ./
    deleting Nouveau[/code]

Sachant que les exemples donnés ont été fait un samedi.
Le renseignement des jours se fait bien
La définition de linked_src se fait bien pour sa première fois,
Mais, comme nous sommes un samedi, cette variable doit être re-écrite après le test if. Il semble que cela ne se fasse pas puisque dans la ligne Rsync, je retrouve un link-dest pointant vers un vendredi.
Néanmoins, l’effacement des répertoires journalier se fait le samedi, deleting Nouveau est un marqueur que j’ai mis dans tous les répertoires. Mais, l’effacement ne se fait que pour le samedi alors qu’il devrait avoir lieu, si je comprends bien pour tous les répertoires journaliers.

Je me suis longuement penché sur de la documentation sur bash mais n’ai pas réussi à trouver l’explication de ces dysfonctionnements. J’ai bien sûr vérifié avec soin tout les noms des différents répertoires impliqués dans l’affaire.

Merci de votre aide et si possible de vos explications.

C’est le test suivant qui est mal écrit :

if [ today = 'samedi' ]; then … fi

Une syntaxe correcte serait :

if [ "$today" = 'samedi' ]; then … fi
Note bien le [mono]$[/mono] qui indique une variable, qui sera remplacée lors du test par sa valeur.

Merci de ton aide. Effectivement je comprends bien mon erreur. Qui plus est, je l’avais sous les yeux car plus bas, je n’ai pas fait la même.
Merci de ton aide et bonne soirée.