# 260302 - sauvegarde du projet Alteris (Code et bases de données)

Meilleure méthode - créer un script de sauvegarde pour Alteris (sauvegarde code et base de données SQL)

### <span style="color: rgb(224, 62, 45);">**./backup\_alteris.sh** </span>

Maintenant que tout fonctionne avec le calcul des surfaces, on va créer un **script d'automatisation** qui s'occupe de tout en une seule commande.

Ce script va :

1. Créer le dossier daté.
2. Sauvegarder la base de données `alteris_db`.
3. Compresser le code source propre.
4. Nettoyer les anciennes archives pour ne pas saturer le disque.

### 1. Création du script de backup

Tape cette commande pour créer le fichier :

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1326 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQzQs" decode-data-ved="1" id="bkmrk-bash" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_316bfb40ddefb8aa","c_5b7951c496f77574",null,"rc_ba1d244ede30de59",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="code-block-decoration header-formatted gds-title-s ng-tns-c2446650269-1326 ng-star-inserted"><span class="ng-tns-c2446650269-1326">Bash</span><div _ngcontent-ng-c2446650269="" class="buttons ng-tns-c2446650269-1326 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2446650269-1326 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1326"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1326"></div></div></div>```
nano /home/debian/backup_alteris.sh

```

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1326 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQzQs" decode-data-ved="1" id="bkmrk--1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_316bfb40ddefb8aa","c_5b7951c496f77574",null,"rc_ba1d244ede30de59",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1326"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1326"></div></div></div>Colle ensuite ce contenu (pense à bien vérifier que le mot de passe et le nom de la base correspondent) :

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1327 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQzgs" decode-data-ved="1" id="bkmrk-bash-1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_316bfb40ddefb8aa","c_5b7951c496f77574",null,"rc_ba1d244ede30de59",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="code-block-decoration header-formatted gds-title-s ng-tns-c2446650269-1327 ng-star-inserted"><span class="ng-tns-c2446650269-1327">Bash</span><div _ngcontent-ng-c2446650269="" class="buttons ng-tns-c2446650269-1327 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2446650269-1327 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1327"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1327"></div></div></div>```
#!/bin/bash

# Configuration
DATE=$(date +%y%m%d)
NOM_SAUVEGARDE="${DATE}-alteris"
REP_DEST="/home/debian/sauv_alteris/$NOM_SAUVEGARDE"
DB_NAME="alteris_db"
DB_USER="alteris_user"

echo "--- Début de la sauvegarde Alteris [$DATE] ---"

# 1. Création du dossier
mkdir -p $REP_DEST

# 2. Sauvegarde de la Base de Données
echo "Exportation de la base de données..."
pg_dump -U $DB_USER -h localhost $DB_NAME > $REP_DEST/db_alteris_final.sql

# 3. Sauvegarde du Code Source (en excluant node_modules pour gagner de la place)
echo "Compression du code source..."
tar -czvf $REP_DEST/code_alteris.tar.gz --exclude='node_modules' /var/www/alteris-geomatic

# 4. Copie des configs système
sudo cp /etc/nginx/sites-available/alteris-geomatic $REP_DEST/nginx_config
pm2 dump && cp ~/.pm2/dump.pm2 $REP_DEST/pm2_config

# 5. Création de l'archive Maîtresse
cd /home/debian/sauv_alteris
tar -czvf backup_FULL_alteris_${DATE}.tar.gz $NOM_SAUVEGARDE

echo "--- Sauvegarde terminée avec succès dans $REP_DEST ---"

```

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1327 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQzgs" decode-data-ved="1" id="bkmrk--4" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_316bfb40ddefb8aa","c_5b7951c496f77574",null,"rc_ba1d244ede30de59",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1327"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1327"></div></div></div>### 2. Rendre le script exécutable

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1328 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQzws" decode-data-ved="1" id="bkmrk-bash-2" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_316bfb40ddefb8aa","c_5b7951c496f77574",null,"rc_ba1d244ede30de59",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="code-block-decoration header-formatted gds-title-s ng-tns-c2446650269-1328 ng-star-inserted"><span class="ng-tns-c2446650269-1328">Bash</span><div _ngcontent-ng-c2446650269="" class="buttons ng-tns-c2446650269-1328 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2446650269-1328 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1328"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1328"></div></div></div>```
chmod +x /home/debian/backup_alteris.sh

```

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1328 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQzws" decode-data-ved="1" id="bkmrk--7" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_316bfb40ddefb8aa","c_5b7951c496f77574",null,"rc_ba1d244ede30de59",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1328"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1328"></div></div></div>### 3. Lancer la sauvegarde maintenant

Il te suffit de taper :

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1329 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQ0As" decode-data-ved="1" id="bkmrk-bash-3" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_316bfb40ddefb8aa","c_5b7951c496f77574",null,"rc_ba1d244ede30de59",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="code-block-decoration header-formatted gds-title-s ng-tns-c2446650269-1329 ng-star-inserted"><span class="ng-tns-c2446650269-1329">Bash</span><div _ngcontent-ng-c2446650269="" class="buttons ng-tns-c2446650269-1329 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2446650269-1329 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1329"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1329"></div></div></div>```
/home/debian/backup_alteris.sh

```

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1329 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQ0As" decode-data-ved="1" id="bkmrk--10" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_316bfb40ddefb8aa","c_5b7951c496f77574",null,"rc_ba1d244ede30de59",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1329"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1329"></div></div></div>*(Il te demandera ton mot de passe PostgreSQL pour l'export).*

---

### Pourquoi c'est "pro" ?

Désormais, à chaque fois que tu fais une modification importante, tu n'as plus besoin de taper 10 commandes. Tu lances `./backup_alteris.sh` et tu récupères un fichier `.tar.gz` tout propre que tu peux télécharger sur ton PC via `scp`.

Voici comment centraliser **tout** ton environnement Alteris dans ton dossier de sauvegarde `/home/debian/sauv_alteris/260302-alteris`.

### 1. Préparer le dossier de regroupement

On va copier tous les fichiers critiques au même endroit avant de tout compresser.

\# On se place dans ton dossier de sauvegarde du jour  
cd /home/debian/sauv\_alteris/$(date +%y%m%d)-alteris

\# 1. On copie le code source complet (JS, HTML, DB.js)  
cp -r /var/www/alteris-geomatic ./code\_source

\# 2. On copie la configuration Nginx (très important pour le HTTPS/SSL)  
sudo cp /etc/nginx/sites-available/alteris-geomatic ./nginx\_config

\# 3. On copie le script de lancement PM2 (pour savoir comment relancer l'API)  
pm2 dump  
cp ~/.pm2/dump.pm2 ./pm2\_config

### 2. Réunir la base de données

On s'assure que le dump SQL (que tu as déjà fait) est bien présent au même endroit. Si tu veux le refaire pour être sûr :

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1229 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQ8Ak" decode-data-ved="1" id="bkmrk-bash-4" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_f9651cb501303d6e","c_5b7951c496f77574",null,"rc_60700614503e026f",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="code-block-decoration header-formatted gds-title-s ng-tns-c2446650269-1229 ng-star-inserted"><span class="ng-tns-c2446650269-1229">Bash</span><div _ngcontent-ng-c2446650269="" class="buttons ng-tns-c2446650269-1229 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2446650269-1229 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1229"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1229">  
</div></div></div>```
pg_dump -U alteris_user -h localhost alteris_db > db_alteris_complet.sql
```

### 3. Créer l'archive "Master Backup"

Maintenant, on va transformer ce dossier qui contient tout (Code + Nginx + PM2 + SQL) en un seul fichier compressé.

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1230 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQ8Qk" decode-data-ved="1" id="bkmrk-bash-5" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_f9651cb501303d6e","c_5b7951c496f77574",null,"rc_60700614503e026f",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="code-block-decoration header-formatted gds-title-s ng-tns-c2446650269-1230 ng-star-inserted"><span class="ng-tns-c2446650269-1230">Bash</span><div _ngcontent-ng-c2446650269="" class="buttons ng-tns-c2446650269-1230 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2446650269-1230 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1230"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1230">  
</div></div></div>```
cd /home/debian/sauv_alteris
tar -czvf backup_FULL_alteris_$(date +%y%m%d).tar.gz $(date +%y%m%d)-alteris

```

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1230 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQ8Qk" decode-data-ved="1" id="bkmrk--18" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_f9651cb501303d6e","c_5b7951c496f77574",null,"rc_60700614503e026f",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1230"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1230"></div></div></div>---

### 4. Ce que contient ton "Kit de Survie"

Si demain tu dois changer de serveur, avec ce fichier `backup_FULL_alteris_260302.tar.gz`, tu as :

- **`code_source/`** : Ton intelligence métier (Node.js + Leaflet).
- **`db_alteris_complet.sql`** : Tes polygones et tes calculs de surface.
- **`nginx_config`** : Tes réglages de sécurité et ton certificat SSL.
- **`pm2_config`** : La méthode pour que le serveur redémarre tout seul.

### 5. La touche finale : Sortir le fichier du VPS

Il ne faut jamais laisser la seule copie d'une sauvegarde sur le serveur lui-même.

**Ouvre un terminal sur TON ordinateur personnel (Windows ou Mac) et tape :**

<div _ngcontent-ng-c2446650269="" class="code-block ng-tns-c2446650269-1231 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjS_fmv4oCTAxUAAAAAHQAAAAAQ8gk" decode-data-ved="1" id="bkmrk-bash-6" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_f9651cb501303d6e","c_5b7951c496f77574",null,"rc_60700614503e026f",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2446650269="" class="code-block-decoration header-formatted gds-title-s ng-tns-c2446650269-1231 ng-star-inserted"><span class="ng-tns-c2446650269-1231">Bash</span><div _ngcontent-ng-c2446650269="" class="buttons ng-tns-c2446650269-1231 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2446650269-1231 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c2446650269="" class="formatted-code-block-internal-container ng-tns-c2446650269-1231"><div _ngcontent-ng-c2446650269="" class="animated-opacity ng-tns-c2446650269-1231">  
</div></div></div>```
scp debian@vps-96337587.ovh.net:/home/debian/sauv_alteris/backup_FULL_alteris_*.tar.gz 
```

Maintenant que ton "kit de survie" est sur ton PC, on peut modifier le code sans aucune crainte. Si on casse tout, on a juste à supprimer et désarchiver ta sauvegarde.

[![image.png](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-03/scaled-1680-/image.png)](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-03/image.png)