Automatisation vers SFTP

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

Pour les utilisateurs Linux


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@149.202.190.44 -hostkey="ssh-key"

## 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@xx.xx.xx.xx << 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 * * 0 ./chemin/vers/command.sh lundi.dmp vendredi.dmp
0 5 * * 1 ./chemin/vers/command.sh mardi.dmp lundi.dmp
0 5 * * 2 ./chemin/vers/command.sh mercredi.dmp mardi.dmp
0 5 * * 3 ./chemin/vers/command.sh jeudi.dmp mercredi.dmp
0 5 * * 4 ./chemin/vers/command.sh vendredi.dmp jeudi.dmp