lundi 1 octobre 2007

Script de sauvegarde sur FTP

Aujourd'hui je vais vous monter comment écrire un script UNIX pour compresser un dossier et l'envoyer sur un serveur FTP.

Pour commencer ouvrez un terminal et tapez : vim sauvegardeFTP
Cela à pour effet de lancer vim (éditeur de texte en ligne de commande) et créer le fichier sauvegardeFTP
Un fois dans vim, tappez "i" pour le mettre en mode "Insertion".
Tapez ensuite : #! /bin/sh
Cette ligne indiquera au système que c'est un fichier script SH (Shell).

Allez à la ligne puis saisissez ce texte :

#Configuration du script
#Serveur

serveurFTP="ftp.mon_domain.tld"

#Port du serveur

serveurFTPPort="21"

#Utilisateur

serveurFTPUser="moi"

#Mot de Passe

serveurFTPPass="mon mot de passe"
#dossier de destination sur le serveur FTP. Attention il doit exister!
serveurFTPDossier="sauvegarde/"
#Nom de l'archive, n'oublier pas de mettre les extensions ".tar.gz"
fichierSortie="Sauvegarde.tar.gz"

Ce paragraphe à pour but de créer des variables pour une utilisation ultérieur dans le script. Maintenant nous allons commencer par indiquer à l'utilisateur que le script ce lance bien. Comme le dossier à compresser et à envoyer sur le serveur est indiqué en argument du script, il faut commencer par tester l'existence du dossier.

#Test de l'existence du dossier passé en argument
if [ "$1" = "" ] ; then
echo Veuillez indiquer le nom du dossier à sauvegarder en argument.
echo Usage : $0 NomFichier

exit 1

fi

#Test de l'existence du dossier

if [ -e $1 ] ; then


#Le code en cas ou le chemin est bon


else

echo "Le dossier '$1' n'existe pas"

exit 1

fi


Maintenant que l'on est sûr du chemin qui est en argument il est possible de passé à la compression du dossier. Pour cela nous utiliseron l'outils UNIX tar qui est est dans toutes bonnes distributions (Même sur Mac Os X). Les options "czf" de tar lui indique que l'on veut compresser au format TAR puis GZ et que le dossier à compresser est après les options. Voici le code à mettre à la place de "#Le code en cas ou le chemin est bon" du code précédent.

echo Script de Sauvegarde FTP
if [ -e $fichierSortie ] ; then

echo "Suppresion de l'ancienne Archive!"

rm $fichierSortie

fi

echo Compression du dossier : $1

tar -czf $fichierSortie $1

echo Envoi du fichier sur le serveur FTP : $serveurFTP

ftp -i -n $serveurFTP $serveurFTPPort <<END_SCRIPT
quote USER $serveurFTPUser

quote PASS $serveurFTPPass

pwd

cd $serveurFTPDossier
binary
put $fichierSortie
pwd

quit


END_SCRIPT

echo "Fin de l'envoi sur le serveur"

echo Suppression du fichier de sauvegarde

rm $fichierSortie

echo "Fin de la sauvegarde !"


Vous avez du remarquer que la commande FTP est terminé par "<< END_SCRIPT". Le texte contenu entre ce symbole et le symbole "END_SCRIPT" est envoyé a la commande durant son exécution. Il permet l'identification de l'utilisateur, le changement de dossier, l'envoi du fichier et la déconnexion du serveur FTP.
Maintenant, il faut sortir et enregistrer notre travail. Pour cela commencer par appuyer sur "echap" ("esc" sur Mac) pour sortir du mode insertion puis tapez ":wq". Le "w" demandera à vim d'enregistrer le fichier et le "q" lui demandera de quitter.

Pour l'utilisation du script, tapez dans le terminal : ./sauvegardeFTP monDossier
Après avoir validé, vous verrez l'exécution du script avec la compression et l'envoi sur le serveur FTP.

Niveau : Expérimenté
Compatibilité : Tous serveur FTP (Windows inclu)

Aucun commentaire: