Appel aux dieux des Scripts Bash...

Bon, je me suis remis il y a peu à faire quelques scripts bash pour me simplifier la vie. Or, en consultant différents sites, je constate que la syntaxe n’est jamais la même… Bon, mes scripts fonctionnent, mais je n’aime pas faire de l’à-peu-près :wink:

Deuxième chose, je vous mets un petit scripts que j’exécute pour les sauvegardes. Si on lui passe le paramètre “usb”, il regarde si ma clef est bien branchée (vérification de l’existence du répertoire /media/XXXX-XXXX). Si c’est le cas, il vérifie que le répertoire du backup du jour (nom de rép créée avec la date). Si c’est le cas----> exit.

Sinon, il compresse les répertoires que je veux sauvegarder (les erreurs sont stockées dans un log) et les écrit directement sur ma dropbox. Si le paramètre “usb” a été passé, il crée les archives d’abord sur la clef avant de les “cp” sur dropbox.

Alors, j’ai besoin de votre aide pour me donner des idées afin de rendre ce script plus digeste et je voudrais aussi utiliser une boucle pour examiner dans le rép /media/ histoire de ne plus imiter le script à une seul clef :slight_smile:

Je vous remercie d’avance de vos lumières et m’excuse pour ce script qui peut paraître bien peu structuré (j’ai toujours aimé scripter en fonçant tête baissée et modifier au fur et à mesure…). Et n’hésitez pas à me pourfendre pour ma syntaxe approximative…

Le script:

#! /bin/sh

clear

date >>~/scripts/sauv.log

if [ “$1” = “usb” ];
then
if [ -e “/media/7E2C-0475/” ];
then chemin="/media/7E2C-0475/backup/"
echo “Sauvegarde sur clef USB”
else echo “Faudrait peut être la brancher la clef hein ?”
echo “Enfin…”
echo “Je dis ça, je dis rien…”
echo “^_^”
echo
echo
cowsay Dommage
exit
fi
else chemin="/home/baldarhion/Dropbox/backup/"
echo “Sauvegarde sur DROPBOX”
fi

Création du répertoire de destination

DT=date +%d-%m-%Y

REP=$chemin"sauvegarde$DT"

if [ -e “$REP” ];
then echo “C’est déjà fait dude…”
exit
else mkdir $REP
fi

Sauvegardes renpy

echo "*****************************"
echo “Sauvegardes Ren’py en cours…”
tar -cjf $REP/renpysave.tar ~/.renpy/
2>>~/scripts/sauv.log
echo “OK.”
echo

Sauvegardes mail

echo “Sauvegarde des mails…”
tar -cjf $REP/mailsave.tar ~/.thunderbird/* 2>>~/scripts/sauv.log
echo “OK.”
echo

Sauvegardes des documents

echo “Sauvegardes des documents…”
tar -cjf $REP/docs.bz2 ~/Documents/doc/* 2>>~/scripts/sauv.log
echo “OK.”
echo “"
echo “Sauvegardes Traductions…”
tar -cjf $REP/traductions.bz2 ~/Documents/doc\ jeux/Traduction\ Homeward/
2>>~/scripts/sauv.log
tar -cjf $REP/script.bz2 ~/jeux/homeward\ french/game/script.rpy 2>>~/scripts/sauv.log
echo “OK.”
echo "
*”
echo
echo

si sauvegarde sur clef USB, on copie vers Dropbox

if [ “$1” = “usb” ];
then echo “Copie des archives sur Dropbox”
chem2="/home/baldarhion/Dropbox/backup/sauvegarde$DT"
mkdir $chem2
cp $REP/* $chem2
echo “OK.”
fi

PS: désolé, je n’arrive pas à conserver les indentations avec le copier/coller :’(

ha les batch, j’aime ^^
ça me rapelle des bons souvenirs,
et y a pas plus simple pour des actions simples et efficaces…

mais perso pour mes sauvgardes (vers mon serveur ou autres) j’utilise FreeFileSync.exe,
programme gratuit et simplee a utiliser.

comme je suis pas un dieu en batch, je ne saurais te conseiller…

Hé hé :slight_smile:
Mais c’est tellement plus drôle de le faire à sa sauce. Par contre ton message vient e me faire penser à la commande rsync… C’est malin, je vais encore passer une journée à bidouiller :stuck_out_tongue:

Avec un peu de chance, on pourra arriver à faire le script de sauvegardes ultime et collaboratif…

Je vais quand même jeter un oeil au logiciel que tu utilises.

Bonjour, qu’est-ce qui différencie les scripts recup_site_[1-4].sh ? j’écrirais plutôt une fonction unique, qui accepte des paramètres, appelées dans une boucle pour traiter chaque site… ? [color=#000000]Tutuapp[/color] [color=#000000]9Apps[/color] [color=#000000]Showbox[/color]

Bonjour, qu’est-ce qui différencie les scripts recup_site_[1-4].sh ? j’écrirais plutôt une fonction unique, qui accepte des paramètres, appelées dans une boucle pour traiter chaque site
[color=#000000]Showbox[/color]