Petit script rsync (incrémentale) qui plante

Bonsoir

Voici j’ai un script ~/bin/rsinc.sh (rs: rsync, inc: incrémentale) qui me sufit pour mes sauvegarde de mon Home.
Il garde en mémoire onze dossiers de sauvegarde (après cela, il supprime la dernière afin de créer une nouvelle et ce même si il n’y a pas de changement depuis la dernière sauvegarde)

Je l’utilise régulièrement sans problèmes depuis longtemps.
Je l’ai trouvé sur un site dont avec le temps je ne peux vous donner le lien.

Mais depuis deux trois jours, celui-ci s’exécute et ferme la console (je ne sais pas bien quand exactement : vers le milieu ? une fois fini ? …)
mais cela n’arrivait pas auparavant.
J’utilise urxvt comme terminal

Le voici:

#!/bin/sh
TARGET=/media/Gw/hdext/Rsinc/Bidule
SOURCE=/home/
EXCLUSION=/home/Gw/.config/rsync-exclude.list
/bin/rm -Rf $TARGET/backup.old
/bin/mv $TARGET/backup.9 $TARGET/backup.old
/bin/mv $TARGET/backup.8 $TARGET/backup.9
/bin/mv $TARGET/backup.7 $TARGET/backup.8
/bin/mv $TARGET/backup.6 $TARGET/backup.7
/bin/mv $TARGET/backup.5 $TARGET/backup.6
/bin/mv $TARGET/backup.4 $TARGET/backup.5
/bin/mv $TARGET/backup.3 $TARGET/backup.4
/bin/mv $TARGET/backup.2 $TARGET/backup.3
/bin/mv $TARGET/backup.1 $TARGET/backup.2
/bin/mv $TARGET/backup.0 $TARGET/backup.1
sleep 1
/usr/bin/rsync -av --no-o --exclude-from=$EXCLUSION --delete --safe-links --link-dest=$TARGET/backup.1 $SOURCE $TARGET/backup.0

donc voilà … cela est arrivé lorsque de 6 dossiers de backup je suis passé à 11.
–merci–
:slight_smile:

Bonjour,

sans plus d’informations, faut encore sortir la boule de cristal…

Donc :

  • que disent les logs de la machine, juste après le plantage ?
  • est-ce que l’espace disque est suffisant sur la cible ?

Le reste on verra plus tard.

Bonjour

Une idée pour pister tes erreurs:
ajoute la ligne suivante en 2ème ligne
set -e
et lance ton script à la main:
~/bin/rsync.sh
Ton script s’arrêtera sur l’erreur et te donnera le message d’erreur correspondant

Pour du plus causant, tu peux mettre « set -ex » en 2ème ligne, ça te fera un retour de DEBUG plus complet

2 J'aime

A mon avis, ça peut venir de la dernière ligne.

Pour s’en assurer, essayer de rajouter à la fin

echo "C'est fini !"
sleep 5
for i in $(seq 8 -1 0);do
	/bin/mv $TARGET/backup.$i $TARGET/backup.$(($i-1))
done

c’est mieux, je pense.
Mais ton problème n’est pas là, enfin, je pense, ton code marche quand même.

salut
je ne comprends pas bien la présence de trois dossiers

$TARGET/backup.1 $SOURCE $TARGET/backup.0

sinon la question sh/bash

les droits

Merci

J’ai directement mis en dessous du #!/bin/sh la ligne ’ set -ex’
en réalité si je lance mon script un fois dans le dossier l’appartenant avec sh mon-rsync.sh
tout à l’air d’être ok. (le terminal reste en place et ne se barre pas)

c’est juste donc à mon avis au niveau de l’alias que j’ai créer dans ~/.shell_aliases
alias rsi='exec ~/bin/rsinc.sh'

dans mon terminal, je lance donc rsi + Enter … l’opération à l’air de bien se dérouler avec cette ligne rajouter set -e mais à la fin, la fenêtre du terminal quitte et je me retrouve sans celle-ci.
Avant je n’avais pas ce comportement …

echo "C'est fini !"

sleep 5

ajouté en fin de script prouve bien que toutes les op. sont réussies

@Almtesh
for i in $(seq 8 -1 0);do
/bin/mv $TARGET/backup.$i $TARGET/backup.$(($i-1))
done

Je ne comprend pas cette phrase
cela remplacerait ma dizaine de ligne pour placer backup.N en backup.N+1 ?

@dindoun
$TARGET/backup.1

c’est pour:
--safe-links --link-dest=$TARGET/backup.1

alors mes explications sont surrement à rectifié (j’ai pas le bon langage)
mais cela permet de créer un lien entre les fichiers existant déjà et qui n’ont pas bougé depuis.
ainsi tu évites de les ré-écrire lors de la nouvel backup et tu économise du temps, de la place et de l’usure de disque.
je ne sais trop comment en expliquer plus.
mais si jamais tu copies avec rsync ou cp ton dossier parent à toutes ces backup, tu inscriras sur la destination de cette action, autant de fois les fichier identique par dossier backup-source et juste lié par ce --safe-link dans ses dossier backup-(copié) respectif, qu’il n’y a de liens entre les différents dossiers backup à la source. sorte de lien symbolique ? ou carrément un ?
(j’avoue à me relire, sais plus trop ce que je dis… sorry)

voilà

merci !!
a+

@dindoun

J’ai retrouvé une explication qui avait été copier du web
celui ci met en explication a entre autre l’option –safe-links

Chaque sauvegarde est une image complètes du dossier source.
Mais les fichiers qui y sont identiques
ne sont stocké qu’une seul fois sur le dossier target.
Pour restaurer une ancienne sauvegarde:
Faire un rsync complet de celle choisie.