j'ai fais un petit script qui me fait un backup, il est tout simple mais il a un probleme : il me ferme le terminal dans lequel il tourne et je ne comprends pas pourquoi.
voici le script :
#!/bin/bash
if [ ! -d "$1" ] ; then
echo "$1 doit etre un dossier"
return
fi
LIST=/etc
echo "sauvegarde systeme de base : dossiers $LIST"
ARCH="$1/sav-base.tar.bz2"
CMD="sudo tar -cjf $ARCH $LIST --totals"
echo $CMD
exec $CMD
alors oui je sais, encore un script de backup, il y en a plein... mais tout ce que j'ai vu ne me convient pas : je ne veux pas de script quotidient, moi je veux juste lancer un backup du (ou des dossiers) listés dans le script (LIST) et surtout le lancer manuellement,
Bref, je ne sais pas pourquoi ca ferme mon terminal, le fichier est bien crée
je le lance ainsi :
. sav /media/key/backup
ha oui aussi, j'ai tar qui me reponds ca :
tar: Retrait de « / » de tête des noms des membres
ca ne l'empeche pas de fonctionner mais je ne comprends pas quel / j'aurai mis en trop ?
pas facile, je ne pensais pas y passer autant de temps,
au secours...
merci.
# rtfm - stfg
Posté par Vincent . Évalué à 5.
... On successful completion, exec never returns. ...
Peut être est ce la ton problème.
Enlève le tout simplement, tu peux mettre la variable $CMD directement.
Ensuite tar enlève le premier '/' des dossiers pour ne pas écraser ton FS lors du futur extract.
Ici '/etc' devient 'etc' dans l'archive.
[^] # Re: rtfm - stfg
Posté par B16F4RV4RD1N . Évalué à 4.
cela quitte immédiatement après avoir tout listé.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # y'a pas "man exec" ;)
Posté par fabien . Évalué à 4.
voici pour info, mon ptit script.
a lancer avec ./sav et non pas . sav a cause de l"exit
#!/bin/bash
LIST=/etc
NOM=etc
if [ ! -d "$1" ] ; then
echo "$1 doit etre un dossier"
exit
fi
echo "sauvegarde systeme de base : $LIST"
ARCH="$1/sav-$NOM.tar.bz2"
CMD="sudo tar -cjf $ARCH $LIST --totals"
echo $CMD
$CMD
merci.
# Lancement
Posté par peck (site web personnel) . Évalué à 2.
- tu ne le lance pas comme un exécutable, mais comme une liste de commandes du shell
- tu utilise exec pour lancer la sous-commande
Ce qui en résumé donne :
- le contenu de ton script est lancé dans le shell en cours
- le shell en cours est remplacé par $CMD
- $CMD se termine -> le le terminal fait comme si bash s'était terminé
Fais de ton script un exécutable (chmod +x sav) et lance le avec ./sav
[^] # Re: Lancement
Posté par fabien . Évalué à 2.
c'est exactement ca.
ca faisait longtemps que j'avais plus fait de script.
et puis je bookmark linux-attitude du coups ;)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.