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 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 smile


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 smile 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