#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
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 !
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
Hors ligne
#5 Le 05/03/2007, à 14:57
- kaworu
Re : Script de sauvegarde de quelques fichiers système
ok, amuse toi bien
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
"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
À moins que vous connaissez déjà un petit script ou logiciel qui le fait bien 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
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
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
Et également un grand merci à Fork pour son script
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
hé nickel en laissant le nom du dossier tel quel, vu qu'il était en double quote.
MerciEt également un grand merci à Fork pour son script
héhé Mais de rien
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
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
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 , 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