L’objectif de cette documentation est de décrire précisément les étapes permettant d’envoyer automatiquement et quotidiennement des fichiers de dump vers un serveur SFTP.
Pour les utilisateurs Windows
Étape 1 : Configurer les commandes d’envois
1. Installation de WinScp
WinSCP est l'outil principal pour orchestrer l'automatisation des fichiers de sauvegarde vers le serveur SFTP. Téléchargez-le via le lien suivant : WinSCP Download
2. Mis en place des commandes
Pour effectuer le transfert des fichiers, nous allons utiliser un script détaillant les commandes SFTP pour déposer les fichiers sur le serveur distant. En trois étapes :
- Créer un dossier
/dumps
pour stocker les scripts.
Puis, à l’intérieur de ce dossier, il faut créer les fichiers suivants:
- Dans un fichier
script.txt
, insérer les commandes suivantes :
option batch abort
option confirm off
## Open SFTP Session
open sftp://user:password@files.data.manty.eu -hostkey="ssh-ed25519 255 k5sJodysy41Xtj6CClLhzHtHaJHQhIZP0Zmliq1POuU"
## Change local directory and remote directory
lcd chemin/vers/dumps/
cd uploads
## Transfer current dump file and replace the old one
## %1% is the parameter referencing to the file name of the dump you want to transfer
## %2% is the parameter referencing to the file name of the dump already in the SFTP
put %1%
rm -f /uploads/%2%
## exit SFTP Session
exit
- Dans un autre fichier
command.cmd
, écrire la commande suivante :
"C:\\Program Files (x86)\\WinSCP\\winscp.com" /ini=nul /script="chemin/vers/dumps/script.txt" /console /parameter %1 %2 /log=/chemin/vers/dumps/script.log
Cette commande permet de lancer l’exécution de script.txt
à travers l’application Winscp, et stocker les logs d’exécution de la commande dans un fichier script.log.
Attention : il est nécessaire de remplacer les chemins décrit dans la commande par les chemins correspondant sur votre machine !
Étape 2 : Le planificateur de tâches
Pour automatiser l'exécution des scripts précédemment implémentés, configurez le planificateur de tâches pour programmer l'envoi quotidien des fichiers de sauvegarde vers le SFTP.
Vous pouvez trouver le planificateur de tâche en cherchant dans la barre de recherche Windows. Une fois ouvert, il faut suivre les étapes suivantes:
1. Créer une tâche
→ Cliquez sur le bouton "Créer une tâche" en haut à droite pour planifier la tâche.
2. Nommer votre tâche
→ Commencez par donner un nom à la tâche.
Essayez de donner un nom descriptif permettant de bien identifier celle-ci !
→ Il faut ensuite définir les déclencheurs et les actions de la tâche.
3. Définir les déclencheurs
Ils permettent de définir l’heure d’exécution de la tâche.
→ Dans l’onglet Déclencheurs, appuyez sur Nouveau et modifiez l'heure à laquelle vous souhaitez programmer l'envoi du fichier. Appuyez sur OK pour confirmer.
4. Définir les actions
Elles permettent de spécifier quelle commande va être éxecuter par la tâche.
→ Dans l’onglet Actions, appuyez sur Nouveau et ajoutez la commande à exécuter par le planificateur. Parcourez les fichiers pour trouver le fichier command.cmd
, qui va être la commande effectué par le planificateur de tâches.
Dans la case Ajouter des arguments, ajoutez les deux arguments suivants à la suite:
- Argument 1: Nom du fichier du dump que vous voulez transférer
- Argument 2: Nom du fichier du dump déjà présent dans le SFTP
Donc si vous voulez envoyer le fichier mardi.dmp et écraser le fichier lundi.dmp déjà présent sur le SFTP, il faut rajouter dans la case: mardi.dmp lundi.dmp
Validez ces changements pour planifier la tâche.
- Si le nom de votre dump change chaque jour, il faut créer une nouvelle tâche et répéter ces étapes pour chaque jour de la semaine.
- En cas de soucis, il ne faut pas hésiter à regarder les logs décrit dans le fichier script.log pour avoir plus d’informations sur l’erreur !
Pour les utilisateurs Linux
Étape 1 : Installer sshpass
sshpass
est l’outil permettant d’automatiser la connexion au serveur SFTP en utilisant un mot de passe. Pour l’installer:
- Ubuntu/Debian:
apt install sshpass
- Centos/Fedora
yum install sshpass
- Mac avec macports
port install sshpass
- Mac avec brew
brew install <https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
>
Étape 2: Configurer et automatiser les commandes d’envois
1. Créer un script .sh
→ Vous pouvez créer un fichier command.sh permettant l’envoi du dump vers le SFTP.
## command.sh
#!/bin/bash
## Stocker les logs dans le fichier command.log
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>command.log 2>&1
## Envoi du fichier
sshpass -p "password" sftp -oBatchMode=no user:password@files.data.manty.eu << EOF
cd uploads
put $1
rm -f /uploads/$2
exit
EOF
→ Il faut ensuite rendre le script éxécutable via la commande chmod +x command.sh
2. Créer un CRONJOB
→ Modifier le CRONJOB de votre machine en y indiquant l’heure d’éxécution du script au quotidien.
## Editer le cron
crontab -e
# Paramétrer l'heure d'éxécution
# Exemple de la définition d'un cron:
# .---------------- minute (0 - 59)
# | .------------- heure (0 - 23)
# | | .---------- jour du mois (1 - 31)
# | | | .------- mois (1 - 12) OU jan,feb,mar,apr ...
# | | | | .---- jour de la semaine (0 - 6) (Dimanche=0 ou 7) OU sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * commande à éxécuter
0 5 * * 1 ./chemin/vers/command.sh lundi.dmp vendredi.dmp
0 5 * * 2 ./chemin/vers/command.sh mardi.dmp lundi.dmp
0 5 * * 3 ./chemin/vers/command.sh mercredi.dmp mardi.dmp
0 5 * * 4 ./chemin/vers/command.sh jeudi.dmp mercredi.dmp
0 5 * * 5 ./chemin/vers/command.sh vendredi.dmp jeudi.dmp