Sauvegarde Externe
Note importante : Attention ! Les batch (ou lignes de commande) sont fournis à titre d’exemple : ils sont à adapter et à tester en fonction du contexte réseau et du résultat attendu. Ils doivent être mis en place par un utilisateur maitrisant PostgreSQL et les flux réseau associés. En fonction des protocoles de sécurité mis en place, les identifiants et mot de passes peuvent circuler en « clair » sur le réseau !
1. Réalisation d’une sauvegarde distante via pg_dump (via sh/cmd)
Descriptif de la commande : pg_dump est une commande permettant de réaliser une sauvegarde d’une base de données PostgreSQL locale ou distante.
Documentation en ligne : https://docs.postgresql.fr/15/app-pgdump.html
Tant sous Windows que sous linux, il est possible de réaliser une sauvegarde distante via la commande pg_dump :
Syntaxe : pg_dump --no-owner --format=c -h <IP_SERVER> -p <PORT> -d <BDD> -U <USER_POSTGRESQL>
Exemple d’utilisation de la commande pg_dump sous windows.
Naturellement, sous Windows, il conviendra de télécharger un PostgreSQL et de n’installer, par exemple que les outils en ligne de commande :

Sur un serveur linux, les paquets nécessaires à la cette opération seront à installer sur le serveur distant :
Note importante : Pensez toujours à télécharger une version des commandes PostgreSQL (Linux ou Windows) compatible et au plus proche de la version présente sur l’environnement Open-Prod !
Pour Windows, rendez-vous sur l’url : https://www.postgresql.org/download/windows/
Note : les commande pg_restore, createdb et dropdb sont aussi disponibles sur les différents OS. Naturellement l’utilisation de ces commandes spécifiques nécessite une bonne connaissance de PostgreSQL.
Information complémentaire : Toutes les commandes précitées nécessitent une authentification sur le serveur PostgreSQL distant. Rendez-vous sur l’url : https://www.postgresql.org/docs/12/libpq-pgpass.html afin d’automatiser la connexion à partir du poste client.
2. Réalisation d’une sauvegarde distante via curl (via Open-Prod)
Descriptif de la commande : curl est une commande présente sur de nombreux système Windows et Linux. Cette commande permet d’exécuter des scripts ou des connexion web en ligne de commande. Elle permet, entre autres, de transférer des fichiers.
Pour plus d’information, rendez-vous sur : https://curl.se/docs/tooldocs.html
Syntaxe : curl -X POST -F master_pwd=<MASTER_PASSWORD> -F name=<DATABASE> -F backup_format=<BACKUP_FORMAT> -o <NOM_DE_FICHIER> http://<ADRESSE_IP>:8068/web/database/backup
@ECHO OFF
SET ADMIN_PASSWORD_DEST=M0t2PassE
SET SERVEUR_DEST=192.168.40.17
SET DATABASE_DEST=REFERENCE_MYFAB
SET BACKUP_FORMAT=zip
SET FILE_DEST=REFERENCE_MYFAB_BCK_WIN_CURL.zip
curl -X POST -F master_pwd=%ADMIN_PASSWORD_DEST% -F name=%DATABASE_DEST% -F backup_format=%BACKUP_FORMAT% -o %FILE_DEST% http://%SERVEUR_DEST%:8068/web/database/backup
Note : la variable ADMIN_PASSWORD_DEST est ici le mot de passe Admin de manipulation de bases de données sous Open-Prod. Naturellement l’url de sauvegarde doit embarquer le protocole (ici http) et le port (8068). Le type de sauvegarde (dump ou zip) est à adapter en fonction de la volumétrie et du stockage de la GED d’Open-Prod.
Rappel : la mise en place d’un paramétrage de sauvegarde à distance doit être réalisée par un utilisateur connaissant bien la notion des flux réseau. Naturellement, un test de la validité du fichier .zip (donc la sauvegarde) est à réaliser en aval de ladite sauvegarde de manière périodique, par tentative de restauration sur le serveur, par exemple.
Exemple complet d'une sauvegarde / restauration via curl :
1 - Sauvegarde backup zip sur serveur Open-Prod
Décomposition des options
curl: client API HTTP(s) en ligne de commande.-X POST: envoie une requête HTTP POST (nécessaire pour cet endpoint).-F master_pwd=openprod: champ de formulairemaster_pwdOpen-Prod (mot de passe maître) défini dans la configuration du serveur (fichierserver.confd’Odoo/Open‑Prod). Sans ce mot de passe, le serveur refuse l’opération.-F name=BaseOPP1: nom de la base de données à sauvegarder.-F backup_format=zip: demande un format fichier ZIP (contient le dump SQL + éventuellement les fichiers/filestore selon l’implémentation).-o SauvOPP_001.zip: nom du fichier de sortie côté client. Le contenu renvoyé par le serveur est écrit dans ce fichier.https://10.10.20.30:8068/web/database/backup: URL de l’endpoint de backup (sur Odoo/Open‑Prod, c’est l’API standard de sauvegarde des bases).10.10.20.30: IP du serveur8068: port HTTP(S) utilisé par le service (utiliser le l'url directe si nom DNS ou le port 443)/web/database/backup: route qui génère la sauvegarde.
curl -X POST -F master_pwd=openprod -F name=BaseOPP1 -F backup_format=zip -o SauvOPP_001.zip https://10.10.20.30:8068/web/database/backup
le fichier SauvOPP_001.zip sera créé dans le répertoire courant (celui où test exécuté la commande curl). Si tu es dans /home/erp/ et tu lances la commande, le fichier sera : /home/erp/SauvOPP_001.zip
Préparation du fichier :
Ecriture du fichier :
2. Copie du fichier de sauvegarde vers serveur test (Linux à Linux)
scp /home/erp/SauvOPP_001.zip erp@10.10.20.40:/home/erp/
3. Sinon récupérer le fichier de backup en local sur son PC Windows (et passer par intégration web par exemple)
scp erp@10.10.20.30:/home/erp/SauvOPP_001.zip C:\
5. Intégrer le token de session et lancer la restauration du backup par Curl :
curl -X POST -F master_pwd=openprod -F name=SauvOPP_001 -F backup_file=@/home/erp/SauvOPP_001.zip -F "copy=true" -F csrf_token=6b7c2d9daac14ff4c5615e9429cd93bd32f002b7 http://10.10.20.40:8068/web/database/manager




