Script Sauvegarde

Script Sauvegarde - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 16-06-2004 à 10:39:07    

Voila je me suis lancer dans un script mais je ne maitrise pas encore:
Je souhaite sauvegarder mes fichiers de configurations samba apache et autre.
 
j'ai creer cela:

Citation :


#! /bin/sh
 
variable1=/home/espas/sav/etc/samba
variable2=/home/espas/sav/etc/httpd/conf
variable3=/home/espas/sav/etc/squirrelmail
variable4=/home/espas/sav/var/www/html/admin/phpMyAdmin
variable5=/home/espas/sav/var/www/html/squirrelmail/config
 
 
mkdir /home/espas/sav
mkdir /home/espas/sav/etc
mkdir /home/espas/sav/etc/samba
mkdir /home/espas/sav/etc/httpd
mkdir /home/espas/sav/etc/httpd/conf
mkdir /home/espas/sav/etc/squirrelmail
mkdir /home/espas/sav/var
mkdir /home/espas/sav/var/www
mkdir /home/espas/sav/var/www/html
mkdir /home/espas/sav/var/www/html/admin
mkdir /home/espas/sav/var/www/html/admin/phpMyAdmin
mkdir /home/espas/sav/var/www/html/squirrelmail
mkdir /home/espas/sav/var/www/html/squirrelmail/config
 
 
cp /etc/samba/smb.conf $variable1
cp /etc/httpd/conf/commonhttpd.conf $variable2
cp /etc/httpd/conf/httpd2.conf $variable2
cp /etc/squirrelmail/config.php $variable3
cp /var/www/html/admin/phpMyAdmin/config.inc.php $variable4
cp /var/www/html/squirrelmail/config/config.php $variable5
 
echo "Fichier sauvegarder"
 


------------------------------------------
Le probleme qui se pose ets que si les fichier ont deja ete sauvegarder, il me dit que il ne peut pas creer les dossier car ils existent deja.
 
Comment puis-je supprimer ces avertissement, je pense incorporer les ligne de suppression des fichier et dossier en debut de script et apres les recreer.
 
Qu'en penssez vous.

Reply

Marsh Posté le 16-06-2004 à 10:39:07   

Reply

Marsh Posté le 16-06-2004 à 10:49:46    

pour éviter les messages(et rendre la copie récursive):
cp -rf fichier1 fichier2
 
sinon, y a une erreur dans ton script, il faut écrire:
 

Citation :

echo "Fichiers sauvegardés"

:o


Message édité par En_Sabah_Nur le 16-06-2004 à 10:50:09

---------------
XBL : ESN3S | GGPO (3rd strike) : ESN | PSN : Huitxilopochti
Reply

Marsh Posté le 16-06-2004 à 11:04:15    

Ha ouai merci pour la correction désoler  
et merci pour la commande aussi.
 
Donc maintenant tout marche niquel.
-----------------------------------------
 
2\Probleme
Je souhaite faire un script pour remmetre les fichier seulement le probleme qui va se posé, c'ets que si j'execute ce script en mode utilisateur, il va surement me jeter pour remplacer els fichier.
 
comment est ce que ca marche pour dasn un script passer en root:

Citation :


su
echo "mon_pass"


ca me semble un peu simplet tout de meme

Reply

Marsh Posté le 16-06-2004 à 11:06:49    

"mkdir -p" est ton ami.
tu y gagnerais beaucoup en simplicité à faire un tar de tes fichiers plutôt qu'à les copier...

Reply

Marsh Posté le 16-06-2004 à 11:10:12    

rajoute quelque chose comme ça au début de ton script :
 
if [ ! `id -u` = 0 ]; then
    exec su -c $0
fi
 
(tu peux aussi utiliser sudo à la place de su)

Reply

Marsh Posté le 16-06-2004 à 11:18:52    

ArsuniK
Je n'y connait rien en script, tu pourrai pas me detailelr ce que tu as dit.
Si je comprend bien c'ets pour passer ne root, j'ai remarquer le su masi le reste je vois vraiment pas
 

Reply

Marsh Posté le 16-06-2004 à 11:23:52    

Bon voila deja mon script de sauvegarde est fini, je le pose.
Il ets lourd, je le concoit mais vu que c'ets mon premier script, ca me permet de tout bien voir de facon coherente
 

Citation :


# Mise en place des variables.
variable1=/home/espas/sav/etc/samba
variable2=/home/espas/sav/etc/httpd/conf
variable3=/home/espas/sav/etc/squirrelmail
variable4=/home/espas/sav/var/www/html/admin/phpMyAdmin
variable5=/home/espas/sav/var/www/html/squirrelmail/config
 
 
#Copie de backup
#/!\ ne marche que une (1) fois /!\
rm -r /home/espas/sav.old
mkdir /home/espas/sav.old
cp -bR /home/espas/sav/* /home/espas/sav.old
echo "BackUp créé"
 
 
#Suppression des fichiers deja existant.
rm -r /home/espas/sav
echo "Dossiers supprimés"
 
 
#Création de l'arborescence des dossiers.
mkdir /home/espas/sav
mkdir /home/espas/sav/etc
mkdir /home/espas/sav/etc/samba
mkdir /home/espas/sav/etc/httpd
mkdir /home/espas/sav/etc/httpd/conf
mkdir /home/espas/sav/etc/squirrelmail
mkdir /home/espas/sav/var
mkdir /home/espas/sav/var/www
mkdir /home/espas/sav/var/www/html
mkdir /home/espas/sav/var/www/html/admin
mkdir /home/espas/sav/var/www/html/admin/phpMyAdmin
mkdir /home/espas/sav/var/www/html/squirrelmail
mkdir /home/espas/sav/var/www/html/squirrelmail/config
echo "Dossiers créés"
 
 
#Copie des fichiers de configuration
cp /etc/samba/smb.conf $variable1
cp /etc/httpd/conf/commonhttpd.conf $variable2
cp /etc/httpd/conf/httpd2.conf $variable2
cp /etc/squirrelmail/config.php $variable3
cp /var/www/html/admin/phpMyAdmin/config.inc.php $variable4
cp /var/www/html/squirrelmail/config/config.php $variable5
echo "Fichiers sauvegardés"
 


 
Le seul probleme que j'ai encore, c'ets lors de la premier creation de sauvegarde, le dossier sav etant vide, la creation de sav.old m'affiche des erreurs

Reply

Marsh Posté le 16-06-2004 à 11:51:24    


Tiens une version un peut plus propre:
 


#!/bin/bash
 
# si non root, relance le script avec su
if [ ! `id -u` = 0 ]; then
   echo "Ce script doit etre executé en root, veuillez saisir le password"
   exec su -c $0
fi
 
# Mise en place des variables.
savdir=/home/espas/sav
savmethod=/bin/cp -a
cleanmethod=/bin/rm -r
 
# liste des fichiers a sauvegarder
files="/etc/samba/smb.conf /etc/httpd/conf/commonhttpd.conf /etc/httpd/conf/httpd2.conf /etc/squirrelmail/config.php /var/www/html/admin/phpMyAdmin/config.inc.php /var/www/html/squirrelmail/config/config.php"
 
 
# Copie de backup
# garde 10 versions
last=9
echo -n "Backup "
[ -d "$savdir.$last" ] && $cleanmethod "$savdir.$last"
for i in `seq $last -1 1`; do
    n=$((i+1))
    if [ -d "$savdir.$i" ]; then
       /bin/mv "$savdir.$i" "$savdir.$n"
       echo -n "."
    fi
done
if [ -d "$savdir" ]; then
   /bin/mv "$savdir" "$savdir.1"
   echo -n "."
fi
echo " done"
 
#Copie des fichiers de configuration
function backup() {
  dir=`dirname $1`
  [ ! -d "$savdir/$dir" ] && mkdir -p $savdir/$dir
  $savmethod $i $savdir/$dir
}
 
for f in $files; do
    backup $f
done
echo "Fichiers sauvegardés"


Reply

Marsh Posté le 16-06-2004 à 12:10:37    

sinon rsync c'est bien ;)

Reply

Marsh Posté le 16-06-2004 à 14:59:38    

OKi merci je testerai tout ca demain quand ej seai de retour au taff.
merci

Reply

Marsh Posté le 16-06-2004 à 14:59:38   

Reply

Marsh Posté le 17-06-2004 à 13:52:01    

cortx a écrit :

ArsuniK
Je n'y connait rien en script, tu pourrai pas me detailelr ce que tu as dit.
Si je comprend bien c'ets pour passer ne root, j'ai remarquer le su masi le reste je vois vraiment pas


 
id -u : donne l'uid de l'utilisateur (man id). l'uid de root est toujours 0.
exec : remplace le script courant par la commande donnée en argument (help exec)
$0 : chemin complet du script courant
 
Donc si l'id n'est pas celui de root, on relance le script en root.

Reply

Marsh Posté le 18-06-2004 à 10:55:51    

hulm oki merci c'ets plus clair.

Citation :


# si non root, relance le script avec su  
if [ ! `id -u` = 0 ]; then  
   echo "Ce script doit etre executé en root, veuillez saisir le password"  
   exec su -c $0  
fi  


Donc si j'ai bien compris la demarche, si on ets pas en root, le script execute automatiquement la comamdne su et nous demande le pass afin de continuer la sauvegarde.
 
Commetn faire pour dire au script que le mdp root c'est 123456789 et qu'il le fasse lui meme (utilité pour des sauvegarde genre 3h du matin ou l'on ets sur que plus personne ets present dasn l'entreprise et que els fichier sauvegarder seront finalisé ?)
 
Parce que en fet c'est ce que je souhaiterai faire masi je n'ai pas la possibilité de faire du raid qul qu'il soit alros je me suis rabatut sur cette option.

Reply

Marsh Posté le 18-06-2004 à 11:45:59    

Tu fais un cron.
Le mieux c'est de lancer directement le cron en root :
tu te logue en root et tu fais un man cron pour savoir comment  installer un cron.
 
Pour permettre à un utilisateur de lancer des commandes en root, regarde du coté de sudo mais normallement tu n'es as pas besoin ici.
 

Reply

Marsh Posté le 18-06-2004 à 13:39:00    

Oki merci je regarde pour cron

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed