je suggère un petit copié collé dans le prompt pour suivre à la lettre le 2ème prompt à écrire à l'issue de la première réponse de chatGPT: Je veux sauvegarder une base de données PostGresQL vers un stockage objet S3. Je veux que tu configures le client S3 à chaque execution du script (dans un profil "backup", ce n'est pas un S3 AWS donc tu devra passer le endpoint dans la commande d'upload avec obligatoirement --endpoint-url) Je veux que toutes les informations de connexion du S3 soient toutes dans un fichier .env.local ainsi que toutes les autres variables d'environnement sous la forme DB_, S3_ ou GPG_* La base de donnée peut être sur un port spécifique. Je veux que toutes les actions soient loguées dans un sous répertoire .var/log dans un fichier au nom horodaté avec les horodatages de chaque action. Je veux que le dump de la base de donnée soit compressé et chiffré (gpg). Le nom du fichier horodaté et le script doivent utiliser le mot de passe avec export PGPASSWORD= Je veux que tu supprimes le dump en local à l'issue du script.
Encore une vidéo de qualité, merci pour la petite découverte de S3 et encore mieux sans passer par Amazon. C'est bien noté pour Leviia qui semble être un service correct et honnête !
La prochaine fois on demande à chatgpt de directement écrire toute l’appli symfony haha. Sinon pourquoi pas juste un backup du serveur entier ? Merci à la semaine prochaine
ChatGPT est puissant, mais pas encore suffisamment pour tout lui faire faire 😁 Sur ce projet, la seule chose à persister c'est la base de données, le reste c'est du code, et plus tard nous allons dockeriser, donc pas de besoin de sauvegarder autre chose 👌
Salut Yoan j'espère que tu vas bien, j'ai vu que frankenphp était passé 1.0 est ce que tu pourrais en parler dans une prochaine vidéo ? avec un petit setup docker bien évidemment 😊 a+
petit retour d'experience. j'ai cette erreur que je ne parviens pas tout à fait à résoudre lorsque je lance les scripts .sh : pg_dump: error: server version: 15.4; pg_dump version: 14.9 (Homebrew) pg_dump: error: aborting because of server version mismatch cela n'empêche pas d'envoyer le backup vers Leviia mais c'est pas complètement optimal. j'ai pensé à changer la version de l'image docker pour la DB...non concluant. En tout cas, ce nouveau cloud semble très prometteur, ne serait-ce que pour son prix. je me demande si on ne pourrait pas faire une alternative hors cloud pour l'instant si on veut faire un back up de la DB. qu'en penses tu?
un backup local dans dossier var: #!/bin/bash # Charger les variables d'environnement source ./.env.local # Définir le format de la date et du nom de fichier DATE=$(date +%Y%m%d_%H%M%S) FILE_NAME="db_backup_$DATE.sql.gpg" # Créer un répertoire pour les logs et les backups s'ils n'existent pas mkdir -p ./var/log mkdir -p ./var/backups # Démarrer le log LOG_FILE="./var/log/backup_$DATE.log" echo "$DATE: Début du backup" >> $LOG_FILE # Exporter le mot de passe PG export PGPASSWORD=$DB_PASSWORD # Dump et compression de la base de données echo "$DATE: Début du dump de la base de données" >> $LOG_FILE pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -F c -b -v -f "./var/backups/db_backup_$DATE.sql" $DB_NAME echo "$DATE: Fin du dump de la base de données" >> $LOG_FILE # Chiffrer le fichier dump echo "$DATE: Début du chiffrement du fichier dump" >> $LOG_FILE gpg --batch --yes --passphrase "$GPG_PASSPHRASE" --symmetric --cipher-algo AES256 "./var/backups/db_backup_$DATE.sql" echo "$DATE: Fin du chiffrement du fichier dump" >> $LOG_FILE # Suppression du fichier dump non chiffré echo "$DATE: Début de la suppression du fichier dump non chiffré" >> $LOG_FILE rm "./var/backups/db_backup_$DATE.sql" echo "$DATE: Fin de la suppression du fichier dump non chiffré" >> $LOG_FILE # Finalisation du log echo "$DATE: Fin du backup" >> $LOG_FILE # Désactivation de l'export PGPASSWORD unset PGPASSWORD
Franchement entre le gitcopilot et l'utilisation de ChatGPT j'ai de moins en moins de plaisir à regarder tes vidéos. J'ai pas l'impression de voir un développeur m'expliquer comment il construit une appli mais quelqu'un qui copie-colle toute la journée...
Je comprends. En même temps j'ai intégré ces outils dans mon panel, et mes vidéos reflètent ce que j'utilise au quotidien. Pour autant, j'ai toujours l'impression de construire des applications, les outils n'étant qu'un facilitateur.
j'aime bien tes vidéos mais il y a trop de blabla, des moments blancs ou tu respire tu dis rien tu reflechis etc. on dirait que tu ne monte pas du tout tes vidéos, tu aurais pu couper au moins 5-10min de moments inutiles
je suggère un petit copié collé dans le prompt pour suivre à la lettre le 2ème prompt à écrire à l'issue de la première réponse de chatGPT:
Je veux sauvegarder une base de données PostGresQL vers un stockage objet S3.
Je veux que tu configures le client S3 à chaque execution du script (dans un profil "backup", ce n'est pas un S3 AWS donc tu devra passer le endpoint dans la commande d'upload avec obligatoirement --endpoint-url)
Je veux que toutes les informations de connexion du S3 soient toutes dans un fichier .env.local ainsi que toutes les autres variables d'environnement sous la forme DB_, S3_ ou GPG_*
La base de donnée peut être sur un port spécifique.
Je veux que toutes les actions soient loguées dans un sous répertoire .var/log dans un fichier au nom horodaté avec les horodatages de chaque action.
Je veux que le dump de la base de donnée soit compressé et chiffré (gpg). Le nom du fichier horodaté et le script doivent utiliser le mot de passe avec export PGPASSWORD=
Je veux que tu supprimes le dump en local à l'issue du script.
Allé, hop la, commentaire epinglé !
Merci !
Magnifique vidéo, merci bcp, j'espère que cette vidéo va aider mon équipe sur la problématique de backup des données.
Merci beaucoup pour ton message !
Tien nous au courant :)
Comme toujours mon petit bonbon du samedi fut délicieux bon weekend Yoan
Merci 😘
Encore une vidéo de qualité, merci pour la petite découverte de S3 et encore mieux sans passer par Amazon. C'est bien noté pour Leviia qui semble être un service correct et honnête !
Merci beaucoup !
Tu peux y aller les yeux fermés, c'est un super produit !
Salut, sympa cette démo de backup en utilisant ces outils, c'est intéressant. Un petit plus serait de faire la commande de restore de BDD.
ton extension chatGPT dans le cas du S3 est juste géniale :)
Pratique n'est-ce pas :)
La prochaine fois on demande à chatgpt de directement écrire toute l’appli symfony haha.
Sinon pourquoi pas juste un backup du serveur entier ?
Merci à la semaine prochaine
ChatGPT est puissant, mais pas encore suffisamment pour tout lui faire faire 😁
Sur ce projet, la seule chose à persister c'est la base de données, le reste c'est du code, et plus tard nous allons dockeriser, donc pas de besoin de sauvegarder autre chose 👌
Salut Yoan j'espère que tu vas bien, j'ai vu que frankenphp était passé 1.0 est ce que tu pourrais en parler dans une prochaine vidéo ? avec un petit setup docker bien évidemment 😊 a+
petit retour d'experience. j'ai cette erreur que je ne parviens pas tout à fait à résoudre lorsque je lance les scripts .sh :
pg_dump: error: server version: 15.4; pg_dump version: 14.9 (Homebrew)
pg_dump: error: aborting because of server version mismatch
cela n'empêche pas d'envoyer le backup vers Leviia mais c'est pas complètement optimal. j'ai pensé à changer la version de l'image docker pour la DB...non concluant.
En tout cas, ce nouveau cloud semble très prometteur, ne serait-ce que pour son prix.
je me demande si on ne pourrait pas faire une alternative hors cloud pour l'instant si on veut faire un back up de la DB. qu'en penses tu?
un backup local dans dossier var:
#!/bin/bash
# Charger les variables d'environnement
source ./.env.local
# Définir le format de la date et du nom de fichier
DATE=$(date +%Y%m%d_%H%M%S)
FILE_NAME="db_backup_$DATE.sql.gpg"
# Créer un répertoire pour les logs et les backups s'ils n'existent pas
mkdir -p ./var/log
mkdir -p ./var/backups
# Démarrer le log
LOG_FILE="./var/log/backup_$DATE.log"
echo "$DATE: Début du backup" >> $LOG_FILE
# Exporter le mot de passe PG
export PGPASSWORD=$DB_PASSWORD
# Dump et compression de la base de données
echo "$DATE: Début du dump de la base de données" >> $LOG_FILE
pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -F c -b -v -f "./var/backups/db_backup_$DATE.sql" $DB_NAME
echo "$DATE: Fin du dump de la base de données" >> $LOG_FILE
# Chiffrer le fichier dump
echo "$DATE: Début du chiffrement du fichier dump" >> $LOG_FILE
gpg --batch --yes --passphrase "$GPG_PASSPHRASE" --symmetric --cipher-algo AES256 "./var/backups/db_backup_$DATE.sql"
echo "$DATE: Fin du chiffrement du fichier dump" >> $LOG_FILE
# Suppression du fichier dump non chiffré
echo "$DATE: Début de la suppression du fichier dump non chiffré" >> $LOG_FILE
rm "./var/backups/db_backup_$DATE.sql"
echo "$DATE: Fin de la suppression du fichier dump non chiffré" >> $LOG_FILE
# Finalisation du log
echo "$DATE: Fin du backup" >> $LOG_FILE
# Désactivation de l'export PGPASSWORD
unset PGPASSWORD
Difficile de prévoir un script qui marche du premier coup pour tous les environnements ;)
C'est la magie du métier ^^
Par curiosité, tu as des propositions de partenariat de la part de qui ?
Comme j'ai refusé, car pas en adéquation avec la ligne de la chaîne, je préfère ne pas divulguer les noms, pour respecter les marques/entreprises.
Quelqu'un sait si on utilise moins de 1To par mois avec Leviia S3, on paye quand même 5,99? Ou on paye ce qu'on consomme?
Franchement entre le gitcopilot et l'utilisation de ChatGPT j'ai de moins en moins de plaisir à regarder tes vidéos. J'ai pas l'impression de voir un développeur m'expliquer comment il construit une appli mais quelqu'un qui copie-colle toute la journée...
Je comprends.
En même temps j'ai intégré ces outils dans mon panel, et mes vidéos reflètent ce que j'utilise au quotidien.
Pour autant, j'ai toujours l'impression de construire des applications, les outils n'étant qu'un facilitateur.
j'aime bien tes vidéos mais il y a trop de blabla, des moments blancs ou tu respire tu dis rien tu reflechis etc. on dirait que tu ne monte pas du tout tes vidéos, tu aurais pu couper au moins 5-10min de moments inutiles