Objectif :
Rappatrié automatiquement les fichier de mes sites et les bases de données mysql issus d'un serveur de production distant et exportés par ftp sur un serveur windows dans nos locaux. Le serveur dans nos locaux étant placé derriere une cbox qui possede un dnsdynamique ex : entreprise.dyndns.org.
Problématique 1 : faire le script de sauvegarde (cf le fichier, la problématique sh n'est pas celle abordé ici)
Problématique 2 : Rediriger le port 21 qui arrive sur la cbox vers mon serveur en interne (ip : x.x.x.11)
Problématique 3 : parvenir à passer malgré le mode pasv(passive mode) de la cbox qui bloque les connexions ftp externe.
Etape 1 : paramétrage de la cbox
Parametrer tout d'abord la partie dyndns qui vous permet d'avoir une adresse qui pointra toujours sur votre cbox.Pour obtenir un compte : www.dyndns.org
La cbox n'acceptant pas les connexions ftp passives, il faut la paramétrer un minimum.
Donc voila ce que j'ai dans les différentes interface de l'admin cbox :
Activation d'application
Nom activé protocole Port (depuis) Port (jusqu'à) Adresse IP local Nom d'interface
FTP Serveur (1) Oui TCP 20 21 192.168.30.11 ppp0
FTP PASSV Oui TCP 55024 55135 192.168.30.11 ppp0
Firewall onglet Politique
Interface de réception: ppp0 | Interface de transmission: ppp0
1 * * * 55024 tcp permettre 3 NA
* * * 55135 *
5 * * * 20 tcp permettre 1 NA
* * * 21 *
Firewall onglet Politique basé sur NAT
Sélection ID de l'action Type d'action Adresse Port redirigé Status
1 Redir Port 192.168.30.11 N/A 20 21 Activé
3 Redir Port 192.168.30.11 N/A 55024 55135 Activé
Etape 2 : paramétrer le Serveur FTP fileZilla serveur sur le pc local
Menu Edit> Setting > Passive mode settings :
Il faut cocher le bouton radio :Retrieve external ip adress from et remplisser le champs par : entreprise.dyndns.org
Puis dans l'intervalle des ports utiliser, prenez : 55024 / 55135
Etape 2 : Le fichier cron qui sauvegarde et transfert jusqu'a votre serveur local
Ce script sh sera à appeler dans vos taches cron. Cf crontab, moi je fais ma sauvegarde toutes les nuits uniquement.
Plusieurs etapes dans ce fichier :
- recuperer la date du jour
- compresser les fichier dans un fichier tgz
- exporter les bases de données mysql dans un fichier de sauvegarde
- se connecter au serveur distant
- passer en mode passive off (pasv off)
- creer un repertoire de sauvegarde et envoyé les fichiers
Pas mal l'objectif hein ?
Donc tout d'abord pour que ce fichier fonctionne il vous faut remplir le fichier /root/.netrc avec ca :
Fichier /root/.netrc
machine entreprise.dyndns.org
login logindelutilisateurftp
password motdepasseutilisateurftp
Vous devez mettre les droit en chmod 600 .netrc sur ce fichier.
Ensuite voila le script :
Fichier sauvegarde.sh
#############################################################
#!/bin/sh
date=$(date -R)
set -- $date
DATECRON=$2$3$4
echo "--------------------- debut de la sauve ftp -------------------------------" >> "/root/rapport.txt"
echo ">> Lancement de la sauvegarde des fichiers........">>"/root/rapport.txt"
#On gere la sauvegarde
mkdir /home/Sauvegarde/$2$3$4/;
tar czvf /Sauvegarde/$2$3$4/Sauvegarde_fichier$2$3$4.tgz /votre repertoire a sauvegarder/;
mysqldump -uUTILISATEURMYSQL -pMOTDEPASSEMYSQL --databases VOTREBASEMYSQL>/Sauvegarde/$2$3$4/Sauvegarde_Mysql_$2$3$4.sql;
ftp entreprise.dyndns.org <<
passive off
mkdir $2$3$4
cd $2$3$4
send /Sauvegarde/$2$3$4/Sauvegarde_fichier$2$3$4.tgz Sauvegarde_fichier$2$3$4.tgz
send /Sauvegarde/$2$3$4/Sauvegarde_Mysql_$2$3$4.sql Sauvegarde_Mysql_$2$3$4.sql
close
#############################################################
Voila vous reste plus qu'a mettre un appel a ce fichier dans le crontab et tout roule.
Bonne chance à vous en esperant que ceci vous aidera.
En cas de soucis : epsyboard@msn.com