Pages : 1
#1 Le 15/01/2007, à 17:32
- jobherzt
Petit script de sauvegarde
Bon, c'est pas nouveau, mais plus il y en a de differents... j'ai ecrit un petit script qui permet de sauvegarder des fichiers/dossiers, eventuellement de les encrypter et de les copier vers un ftp. j'ai aussi ecrit un petit script PHP qui permet de voir la liste des sauvegarde, d'avoir qq infos dessus, et notammenet de verifier que l'upload s'est bien passé grace a un checksum md5. en gros :
dans le repertoire ou seront stockées les sauvegardes, il doit y avoir 2 fichiers "inclure" et "exclure" qui contiennent respecyivement la listes des données a sauvegarder et les fichiers a exclure.
lancé seul, le script effectue une sauvegarde complete qui servira de base pour les sauvegardes incrementales suivantes
lancé avec l'option -i le script effectue une sauvegarde incrementale.
dans les 2 cas, le script genere une archive tar/gzip avec un nom explicite, et un fichier .md5 correspondant.
le script upload l'archive et le fichier md5 sur le serveur
le script php doit etre placé dans le meme repertoire que les archives sur le serveur. en se rendant sur la page qui correspond, on voit si l'upload a fonctionné.
lorsque on retelecharge les archives, les fichiers md5 permettent aussi de verifier que le telechargement s'est bien passé.
voila, en esperant que ca ser utile a d'autre:
Le script :
#!/bin/bash
#repertoire ou seront placée les sauvegardes
MYREP=~/script/backup/
EXC=${MYREP}exclure
INC=${MYREP}inclure
STATE=${MYREP}etat
COMPRESSION=9
DATE=$(date +%y%m%d-%H.%M.%S)
# Si le script est appelé avec l'option "-i", alors on fait une sauvegarde incrementale
if [ $1 = "-i" ] ; then
FILENAME=backup_incr_${DATE}.tgz
tar cP --atime-preserve -g $STATE --same-owner --totals -T $INC -X $EXC | gzip -$COMPRESSION > ${MYREP}${FILENAME}
# Sinon, on fait une sauvegarde totale
else
FILENAME=backup_full_${DATE}.tgz
rm -f $STATE
tar cP -g $STATE --atime-preserve --same-owner --totals -T $INC -X $EXC | gzip -$COMPRESSION > ${MYREP}${FILENAME}
fi
#decommenter pour encryption
#ccencrypt -K MotDePasse -- ${FILENAME}
#FILENAME=${FILENAME}.cpt
#generation du fichier contenant le md5
md5sum ${MYREP}${FILENAME} > ${MYREP}${FILENAME}.md5
#envoi FTP
ftp -n ftpperso.free.fr << EOF
user logine pass
bin
cd save
lcd ${MYREP}
send ${FILENAME}
ascii
send ${FILENAME}.md5
bye
EOF
index.php
<?php
function taille($fichier)
{
$taille=filesize($fichier);
if ($taille >= 1073741824)
{$taille = round($taille / 1073741824 * 100) / 100 . " Go";}
elseif ($taille >= 1048576)
{$taille = round($taille / 1048576 * 100) / 100 . " Mo";}
elseif ($taille >= 1024)
{$taille = round($taille / 1024 * 100) / 100 . " Ko";}
else
{$taille = $taille . " o";}
if($taille==0) {$taille="-";}
return $taille;
}
echo("<center><table border=1 cellpadding=10><tr><td>date</td><td>heure</td><td>taille</td><td>type</td><td>Checksum</td></tr>");
if($dh=opendir("."))//on ouvre le repertoire dans lquel on est ('.' designe le repertoire courant)
{
while($file=readdir($dh)) //tant qu'il y a des fichiers : les repertoires sont considérés comme des fichiers
{
$ext = strtolower(substr(strrchr($file, "."), 1));
if($ext=="tgz" || $ext == "cpt")
{
echo("<tr>");
preg_match("/_([0-9]*)-/", $file, $match);
echo("<td>".$match[1]."</td>");
preg_match("/-([0-9]*\.[0-9]*\.[0-9]*)/", $file, $match);
echo("<td>".$match[1]."</td>");
echo("<td>".taille($file)."</td>");
preg_match("/_(.*)_/", $file, $match);
echo("<td>".$match[1]."</td>");
$f=fopen($file.".md5","r");
$t=fgets($f,33);
fclose($f);
if($t== md5_file($file))
{
echo("<td>OK</td>");
}else{
echo("<td><b>ERREUR</b></td>");
}
echo("</tr>");
}
}
}else{
echo("erreur");
}
echo("</table></center>");
?>
exemple de fichier inclure
~/latex/
~/truc
exemple de fichier exclure
*.aux
*.tmp
*~
voila :-)
Dernière modification par jobherzt (Le 15/01/2007, à 17:42)
Hors ligne
#2 Le 30/01/2007, à 19:51
- atlas95
Re : Petit script de sauvegarde
Cool !
Merci
Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net
Hors ligne
#3 Le 30/01/2007, à 20:58
- jobherzt
Re : Petit script de sauvegarde
et ben, conttent que ca serve au moins a une personne :-)
[edit] note que le script suppose que tu eis un repertoire nommé "save" sur ton compte free. au passage, pense a y mettre un fichier htaccess pour le proteger par mot de passe ! ou crypte les sauvegardes en decommentant ce qu'il faut.
Dernière modification par jobherzt (Le 30/01/2007, à 21:01)
Hors ligne
#4 Le 12/01/2009, à 22:41
- azertypoill
Re : Petit script de sauvegarde
pas mal du tout ce petit script...
Je ne comprends pas grand chose, mais cela a l'air super.
Je cher un prog pour faire une sauvegarde d'un disque local type \\Serveur vers un ftp. Cel est possible avec?
Je ne comprends pas trop quels sont les "noms" à changer pour l'adapter à ma situation...
#5 Le 12/01/2009, à 22:58
- jobherzt
Re : Petit script de sauvegarde
Oui, meme si il existe sans doute des logiciels plus adapté a ce genre de situations Sans fausse modestie mon script est assez basique.
Jettes un oeil a areca backup, par exemple, que j'ai decouvert entre temps et que je trouve tres bien.
Si tu veux quand meme essayer le script, dis moi ce qui te pose probleme.
Hors ligne
#6 Le 14/08/2009, à 09:51
- Tuxid
Re : Petit script de sauvegarde
Parfait ! Je cherchais un petit script efficace pour ne pas devoir installer un programme sur ma vieille bécane ! Avec ça c'est parfait ! Un grand merci !
Pour voir ma tronche et pour voir avec quoi je me remplis les zoreilles !
Hors ligne
Pages : 1