Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/03/2007, à 19:17

fork

Script de sauvegarde de quelques fichiers système

Bonjour

J'avais envie de refaire des scripts bash.
J'ai créé un petit script de sauvegarde de quelques fichiers système.
Il peut peut-être servir aux débutants, avant de faire une modification sur un de ces fichiers.
Je le poste aussi pour avoir vos commentaires et avis afin de l'améliorer !
J'aurais probablement du faire une boucle, et aussi une sauvegarde des fichiers avec une date dans le nom de fichier.


Merci

- fstab
- menu.lst
- sources.list
- xorg.conf
- interfaces



#!/bin/bash 

#######################
# scrpit de backup !  #
# 04/03/2007	      #	
# Antoine Even        #
#######################

#Déclarations de quelques variables.
path1='/etc/fstab'
path2='/boot/grub/menu.lst'
path3='/etc/apt/sources.list'
path4='/etc/X11/xorg.conf'
path5='/etc/network/interfaces'

clear

#Création du dossier de sauvegarde.
if [ ! -e $HOME/Backup ]; then
	echo $HOME/Backup "n'existe pas !"
	echo "Création du répertoire."
	mkdir $HOME/Backup
	else echo "Le répertoire" $HOME/Backup "existe."
fi

echo "Sauvegarde des fichiers."

# Sauvegarde de fstab
echo -n "Copie du fichier fstab"
if [ ! -e $path1 ]; then
	echo "						[ False ]"
	else cp $path1 $HOME/Backup/
	echo "						[ OK ]"
fi

# Sauvegarde de menu.lst

echo -n "Copie du fichier menu.lst"
if [ ! -e $path2 ]; then
	        echo "					[ False ]"
		else cp $path2 $HOME/Backup/
		echo "					[ OK ]"
fi

# Sauvegarde de source.list

echo -n "Copie du fichier source.list"
if [ ! -e $path3 ]; then
	echo "					[ False ]"
	else cp $path3 $HOME/Backup/
	echo "					[ OK ]"
fi

# Sauvegarde de Xorg.conf

echo -n "Copie du fichier xorg.conf"
if [ ! -e $path4 ]; then
	echo "					[ False ]"
	else cp $path4 $HOME/Backup/
	echo "					[ OK ]"
fi

# Sauvegarde de interfaces

echo -n "Copie du fichier interfaces"
if [ ! -e $path5 ]; then
	echo "					[ False ]"
	else cp $path5 $HOME/Backup/
	echo "					[ OK ]"
fi

Hors ligne

#2 Le 04/03/2007, à 21:48

kaworu

Re : Script de sauvegarde de quelques fichiers système

fork a écrit :

Bonjour

J'avais envie de refaire des scripts bash.
J'ai créé un petit script de sauvegarde de quelques fichiers système.
Il peut peut-être servir aux débutants, avant de faire une modification sur un de ces fichiers.
Je le poste aussi pour avoir vos commentaires et avis afin de l'améliorer !
J'aurais probablement du faire une boucle, et aussi une sauvegarde des fichiers avec une date dans le nom de fichier.


Merci

- fstab
- menu.lst
- sources.list
- xorg.conf
- interfaces

Salut !
j'ai modifié un peu ton script :
- ajout d'une boucle pour les fichiers (ainsi, on peut en ajouter facilement, il suffit d'ajouter une ligne dans la déclaration de la variable $files
- ajouté des guillement pour les commandes cp,mkdir.
- changement des test -e (existe) par les test -d (existe et est un dossier) ou -f (existe et est un fichier).

#!/bin/bash 

#######################
# scrpit de backup !  #
# 04/03/2007          # 
# Antoine Even        #
#######################

# Déclarations de quelques variables.
files="
/etc/fstab
/boot/grub/menu.lst
/etc/apt/sources.list
/etc/X11/xorg.conf
/etc/network/interfaces
"

clear

# Création du dossier de sauvegarde
if [ ! -d "$HOME/Backup" ]; then
    echo "$HOME/Backup n'existe pas !"
    echo "Création du répertoire."
    mkdir "$HOME/Backup"
else
    echo "Le répertoire $HOME/Backup existe."
fi

echo "Sauvegarde des fichiers."

for f in $files; do
    echo -n "Copie du fichier $(basename $f)"
    if [ ! -f "$f" ]; then
        echo "                      [ False ]"
    else
        cp "$f" "$HOME/Backup/"
        echo "                      [ OK ]"
    fi
done

Voilà, y a encore du boulot avec par exemple un dossier avec la date dans le dossier Backup, et la gestion des fichiers avec espaces (pas très utile mais difficile à implémenter).


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#3 Le 05/03/2007, à 01:08

fork

Re : Script de sauvegarde de quelques fichiers système

Héhé cool !
Je vais regarder ça tout de suite wink !

Hors ligne

#4 Le 05/03/2007, à 01:24

fork

Re : Script de sauvegarde de quelques fichiers système

C'est vraiment bien !
j'aime ceci !

for f in $files; do
    echo -n "Copie du fichier $(basename $f)"

Merci beaucoup !
Je le completerai le script dès que j'ai un peu de temps !
Entre autre pour les dates smile

Hors ligne

#5 Le 05/03/2007, à 14:57

kaworu

Re : Script de sauvegarde de quelques fichiers système

ok, amuse toi bien big_smile

N'oublie pas de le faire aussi pour les fichiers avec espaces, c'est un bon exercice. Parce que la boucle for tel qu'elle est utilisé plus haut va diviser en 2 itération un fichier avec espace (et forcément, ça va pas marcher). C'est pas trop grave vu que tu ne fais que copier des fichiers, mais dans le cas de manipulations plus dangereuses (comme rm) il faut faire très attention à ce genre de détails (même si, évidement l'utilisation d'espace est à proscrire).
Je connais deux méthode pour résoudre ce problème, je te laisse chercher wink


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#6 Le 12/03/2007, à 03:59

fork

Re : Script de sauvegarde de quelques fichiers système

Bonjour

Voici la version 0.3 de mon script lol
-  Création d'un sous-répertoire avec la date du jour comme nom de dossier.

#!/bin/bash 

#######################
# scrpit de backup !  #
# 12/03/2007 ver 0.3  # 
# Antoine Even        #
#######################

# Déclarations de quelques variables.
files="
/etc/fstab
/boot/grub/menu.lst
/etc/apt/sources.list
/etc/X11/xorg.conf
/etc/network/interfaces
"

clear

# Création du dossier de sauvegarde
if [ ! -d "$HOME/Backup" ]; then
    echo "$HOME/Backup n'existe pas !"
    echo "Création du répertoire."
    mkdir "$HOME/Backup"
else
    echo "Le répertoire $HOME/Backup existe."
fi

# Création du sous-répertoire avec la date
jour=$(date +%d-%m-%y)
if [ ! -d "$HOME/Backup/$jour" ]; then
    echo "$HOME/Backup/$jour n'existe pas !"
    echo "Création du sous répertoire $jour."
    mkdir "$HOME/Backup/$jour"
else
    echo "Le répertoire $HOME/Backup/$jour existe."
fi

# Sauvegarde des fichiers
echo "Sauvegarde des fichiers."

for f in $files; do
    echo -n "Copie du fichier $(basename $f)"
    if [ ! -f "$f" ]; then
        echo "                  [ False ]"
    else
        cp "$f" "$HOME/Backup/$jour"
        echo "                          [ OK ]"
    fi
done

Hors ligne

#7 Le 01/04/2007, à 03:23

fork

Re : Script de sauvegarde de quelques fichiers système

Bonjour

Voici la version 0.4 du script
- Si le repertoire du jour, le programme demande si il faut écraser le dossier et donc les fichiers.

#!/bin/bash 

#######################
# scrpit de backup !  #
# 01/04/2007 ver 0.4  # 
# Antoine Even        #
#######################

# Déclarations de quelques variables.
files="
/etc/fstab
/boot/grub/menu.lst
/etc/apt/sources.list
/etc/X11/xorg.conf
/etc/network/interfaces
"

clear

# Création du dossier de sauvegarde
if [ ! -d "$HOME/Backup" ]; then
    echo "$HOME/Backup n'existe pas !"
    echo "Création du répertoire."
    mkdir "$HOME/Backup"
else
    echo "Le répertoire $HOME/Backup existe."
fi

# Création du sous-répertoire avec la date
jour=$(date +%d-%m-%y)
if [ ! -d "$HOME/Backup/$jour" ]; then
    echo "$HOME/Backup/$jour n'existe pas !"
    echo "Création du sous répertoire $jour."
    mkdir "$HOME/Backup/$jour"
else
    echo "Le répertoire $HOME/Backup/$jour existe."
    echo -n "Voulez-vous ecraser les fichiers ? (o/n) "
    read reponse
    case $reponse in
   'o')
    echo "Les fichiers vont être écrasés !"    ;;
   'n')
    exit   ;;
   *) 
    echo "Relancez le script !" 
    exit    ;;
    esac  
fi

# Sauvegarde des fichiers
echo "Sauvegarde des fichiers."

for f in $files; do
    echo -n "Copie du fichier $(basename $f)"
    if [ ! -f "$f" ]; then
        echo "			[ False ]"
    else
        cp "$f" "$HOME/Backup/$jour"
        echo "				[ OK ]"
    fi
done

Dernière modification par fork (Le 01/04/2007, à 03:26)

Hors ligne

#8 Le 15/04/2007, à 12:58

CrisTooR

Re : Script de sauvegarde de quelques fichiers système

Ça serait bien si l'on pouvait utiliser ce script pour faire des sauvegardes de n'importe quelle fichier. Parce exemple des fichiesr d'une clef USB tongue

À moins que vous connaissez déjà un petit script ou logiciel qui le fait bien smile Donc quand j'entre ma clef je clique sur un bouton, ou sa part tout seul et puis sa copie sur mon disque dur de l'ordi ce qui a dans un dossier important de ma clef.

Merci
CrisTooR

Hors ligne

#9 Le 15/04/2007, à 15:39

nounez

Re : Script de sauvegarde de quelques fichiers système

Solution backup:

"unison file synchronizer"

Evitez un backup vers votre $HOME ,
sauvegardez vers un autre support


ND

Hors ligne

#10 Le 12/05/2007, à 08:33

soupaloignon

Re : Script de sauvegarde de quelques fichiers système

Bonjour,

Très sympa ce script. Il remplace avantageusement la ligne de commande à base de "cp /mon/chemin/fichier".
Par contre dans le chemin de sauvegarde j'ai un dossier qui s'appelle "03 outils" (donc un nom avec espace). Et là ça coince.
Dans mon ancienne ligne à base de "cp"je mettais un "\ " à la place de l'espace et ça passait, mais plus maintenant.

J'ai essayé plusieurs manips du genre :
03\outils/fichiers-conf  => enlever l'espace après le "\"
03 outils/fichiers-conf  => laisser le nom du dossier tel quel

Mais ça ne change rien, j'ai toujours un retour en console :

/home/soupaloignon/03\ outils/fichiers-conf n'existe pas !
Création du répertoire.
mkdir: ne peut créer le répertoire `/home/soupaloignon/03\\outils/fichiers-conf': Aucun fichier ou répertoire de ce type

Donc si quelqu'un a une solution pour contourner ça, je suis preneur big_smile
Merci d'avance


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#11 Le 12/05/2007, à 16:34

kaworu

Re : Script de sauvegarde de quelques fichiers système

Salut !
Si tu répértoire est entre quotes, tu n'as pas besoin de d'échapper l'espace avec un \ .
par exemple :

cp "mon fichier avec des espaces.txt" /poubelle/
cp 'mon fichier avec des espaces.txt' /poubelle/

autrement si tu ne met pas de quote il faut échapper de cette manière :

cp mon\ fichier\ avec\ des\ espaces.txt /poubelle/

Dans le script, il y a tout le temps des guillemets (j'ai pas tout regardé, mais on dirait bien), donc essaye sans échapper d'espaces.


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#12 Le 12/05/2007, à 17:51

soupaloignon

Re : Script de sauvegarde de quelques fichiers système

kaworu a écrit :

Salut !
Si tu répértoire est entre quotes, tu n'as pas besoin de d'échapper l'espace avec un \ .
par exemple :

cp "mon fichier avec des espaces.txt" /poubelle/
cp 'mon fichier avec des espaces.txt' /poubelle/

autrement si tu ne met pas de quote il faut échapper de cette manière :

cp mon\ fichier\ avec\ des\ espaces.txt /poubelle/

Dans le script, il y a tout le temps des guillemets (j'ai pas tout regardé, mais on dirait bien), donc essaye sans échapper d'espaces.

Impec ça a marché nickel en laissant le nom du dossier tel quel, vu qu'il était en double quote.
Merci big_smile

Et également un grand merci à Fork pour son script cool

Dernière modification par soupaloignon (Le 12/05/2007, à 17:53)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#13 Le 31/05/2007, à 04:14

fork

Re : Script de sauvegarde de quelques fichiers système

soupaloignon a écrit :

hé nickel en laissant le nom du dossier tel quel, vu qu'il était en double quote.
Merci big_smile

Et également un grand merci à Fork pour son script cool

héhé cool Mais de rien tongue
Il faut surtout dire un grand merci à Kaworu !
Ca faisait un petit temps que je n'étais pas venu voir ce sujet !
Je suis content qu'il vous inspire wink
D'ailleurs je compte faire d'autres script et ou peut-être encore améliorer celui-ci

++

Hors ligne

#14 Le 01/06/2007, à 16:10

Saito

Re : Script de sauvegarde de quelques fichiers système

Bonjour,

J'ai également pensé à faire un script de sauvegarde, mais je l'ai fais en zsh. J'ai implémenté des options pour pouvoir gunzipper/bunzipper les fichiers/dossiers à sauvergarder etc. Il n'est  pas encore tout à fait prêt et je vous le montrerais si ça intéresse quelqu'un.

Bon week-end big_smile

Dernière modification par Saito (Le 01/06/2007, à 16:11)


Aku-Soku-Zan_Shinsengumi

Hors ligne

#15 Le 01/06/2007, à 16:17

soupaloignon

Re : Script de sauvegarde de quelques fichiers système

Je profite de ce fil, vu qu'il y a quelques personnes qui semblent avoir l'habitude de faire des scripts wink, pour poser une question.

J'ai fait un script pour envoyer quelques dossiers vers une clef USB (en fat 32). J'utilise "cp -r" (rsync ne fonctionne pas bien d'ext3 vers fat32) mais le problème c'ets que cela ne me copie pas les dossiers cachés. Quelqu'un a une astuce pour contourner ça ?

Merci d'avance


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne