Script de sauvegarde de base de donnéesDéveloppement et personnalisation

Un script Bash ou Python qui sauvegarde votre base MySQL ou PostgreSQL et ne garde que les copies que vous choisissez

Généralement prêt en 15 minutesRetouches inclusesContrôle qualité
Formules
Paiement protégéEn savoir plus
  • Les retouches prévues par la formule sont gratuites.
  • Sans réponse de votre part dans les 3 jours suivant la livraison, le travail est validé automatiquement.

L’argent est réservé au paiement et versé uniquement une fois le travail validé.

Un script Bash ou Python qui sauvegarde votre base MySQL ou PostgreSQL et ne garde que les copies que vous choisissez

Exemple de résultat

Exemple pour la formule Standard

Fusion des fichiers de ventes mensuels de 9 boutiques en un seul rapport Excel

Comment on le lance

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Dossier : sales/2026-10, 9 fichiers trouvés
2026-11-02 09:14:03 INFO  shop-01.csv : 1 284 lignes
2026-11-02 09:14:04 INFO  shop-02.xlsx : 967 lignes
2026-11-02 09:14:04 WARN  shop-07.csv : 3 lignes sans prix ignorées (lignes 88, 412, 913)
2026-11-02 09:14:05 INFO  Terminé : 10 412 lignes -> report-2026-10.xlsx (feuilles « Ventes » et « Totaux »)

Des paramètres, pas du code

Les noms de colonnes de chaque boutique se trouvent dans settings.ini : une nouvelle boutique ou une colonne renommée, c’est une ligne à modifier :

[columns]
date = Date, Date de vente, Jour
product = Produit, Article, Désignation
quantity = Qté, Quantité, Pièces
price = Prix, Prix unitaire

Un extrait du code

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Lit le fichier d’une boutique et lui donne les noms de colonnes du rapport."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name} : aucune colonne pour '{name}' (recherché : {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Fichiers : une archive ZIP avec merge_sales.py (310 lignes), settings.ini, requirements.txt et un README qui explique comment installer Python, lancer le script et ce que signifie chaque message du journal. Le client le lance sur son propre ordinateur.

Client : une petite chaîne de 9 papeteries ; chaque boutique envoie ses ventes du mois en fichier CSV ou Excel, avec des noms de colonnes légèrement différents. Tâche : un seul script qui lit chaque fichier d’un dossier, met les colonnes au même format et écrit un rapport Excel unique avec toutes les ventes et une feuille de totaux par boutique.

Le client et tous les détails sont fictifs.

À propos de ce service

Une base de données sans copies régulières est à une mauvaise mise à jour ou un disque plein de perdre commandes, articles ou fiches clients. Ce script, en Bash ou en Python selon votre serveur, fait un dump complet de votre base MySQL, MariaDB ou PostgreSQL avec les outils fournis (mysqldump ou pg_dump), le compresse, le nomme avec la date et ne garde que les copies prévues par vos règles, par exemple 7 quotidiennes, 4 hebdomadaires et 6 mensuelles ; les plus anciennes ne sont supprimées que selon ces règles. Le mot de passe de la base va dans le fichier d’options standard que vous remplissez sur votre serveur (.my.cnf ou .pgpass), jamais dans le code. Vous l’installez et le lancez sur votre propre serveur ; nous ne nous y connectons jamais. Testez-le d’abord sur une copie de test, et restaurez une sauvegarde dans une base de test pour vérifier qu’elle fonctionne.

Ce qui est inclus

  • Ce que vous recevezUne archive ZIP avec le script, un README avec des instructions pas à pas et, dès Standard, un fichier de paramètres avec les bases, les dossiers et le nombre de copies à garder ; le code est aussi affiché sur la page de la commande.
  • Outils standardmysqldump ou pg_dump, rien d’exotique à installer
  • Rotation selon vos règlesAnciennes copies supprimées uniquement comme vous l’avez fixé
  • Mot de passe hors du codeDans .my.cnf ou .pgpass sur votre serveur
  • Échecs repérésDès Standard, un dump raté ou vide est consigné et ne compte pas comme copie
  • Code lisibleAvec des commentaires, pour ajouter facilement une base plus tard

Comment ça marche

  1. 1
    TâcheVous décrivez le serveur, les bases et le nombre de copies à garder
  2. 2
    CodeNous écrivons le script et le guide d’installation
  3. 3
    Testez-leVous le lancez sur une copie de test et restaurez une sauvegarde dans une base de test
  4. 4
    RetouchesVous demandez des retouches selon votre formule et envoyez les éventuels messages d’erreur

Ce dont nous avons besoin

La base (MySQL, MariaDB ou PostgreSQL) et sa version, le système du serveur (par exemple Ubuntu 22.04) et si vous pouvez y installer des paquets, la taille de la base, l’emplacement de stockage des copies et l’espace disponible. Vos règles de rotation : combien de copies quotidiennes, hebdomadaires et mensuelles garder. Pour Premium, le second emplacement des copies et l’adresse des e-mails d’échec. N’envoyez jamais de mots de passe ni d’accès au serveur.

Nous vous demanderons :

  • Quelle base, et quelle taille ?
  • Sur quel serveur ?
  • Combien de copies garder ?
  • Où mettre les copies ?
  • Bash ou Python ?

Comparer les formules

FormulesEssentielUne base15 €StandardSauvegarde avec paramètres30 €PremiumOutil de sauvegarde60 €
Délai1 jour2 jours3 jours
Retouches123
Codejusqu’à 150 lignesjusqu’à 400 lignesjusqu’à 1 000 lignes
Fichiers de code1jusqu’à 3jusqu’à 8
Fichier de paramètresNonOuiOui
Messages d’erreur clairs et journalNonOuiOui
Options de lancement et guide pour l’exécution planifiéeNonNonOui
Guide d’installation et d’utilisation (README)OuiOuiOui
LangageBash ou PythonBash ou PythonBash ou Python
Commander EssentielCommander StandardCommander Premium

Paiement protégé

Vous payez à la commande, mais l’argent n’est versé que pour un travail validé.

  • Prix fixeLe prix de la formule ne change pas après le paiement.
  • L’argent est réservéAu paiement, le montant est seulement réservé. Il n’est versé à Dleex qu’une fois le travail validé.
  • Vérifié avant livraisonChaque résultat passe un contrôle qualité avant de vous parvenir, et vous le voyez sur la page de la commande avant de le valider.
  • Retouches gratuitesDemandez des retouches dans le cadre de votre brief autant de fois que la formule le permet.
  • Validation au bout de 3 joursSi, dans les 3 jours suivant la livraison, vous n’avez ni validé le travail ni demandé de retouches, il est validé automatiquement. Si vous écrivez dans le chat de la commande après la livraison, la commande est mise en attente ; après notre réponse, nous pourrons relancer le délai de 3 jours et vous le signalerons dans le chat.
  • Travail refait ou remboursement intégralSi le résultat ne correspond pas à votre brief et que les retouches n’y ont rien changé, ou si le travail prend plus du double du délai prévu, écrivez dans le chat de la commande : nous referons le travail ou vous rembourserons intégralement.
Comment ça marche →

Questions et réponses

Va-t-il supprimer les anciennes sauvegardes ?

Uniquement selon les règles que vous donnez, comme garder 7 copies quotidiennes et 4 hebdomadaires, et uniquement dans le dossier de sauvegarde où il écrit. Tant que vous n’avez pas fixé de règles, il garde tout.

Puis-je garder les copies hors du serveur ?

Premium copie chaque sauvegarde sur un second disque ou sur un stockage que vous avez déjà, avec l’outil en ligne de commande de ce stockage et vos propres clés, que vous saisissez vous-même dans ses paramètres.

Bloque-t-il le site pendant son exécution ?

Pour les tables InnoDB de MySQL et pour PostgreSQL, le dump se fait sans arrêter le site. Les très grosses bases peuvent tout de même le ralentir : lancez-le à une heure creuse.

Allez-vous l’installer sur mon serveur ?

Non. Nous ne nous connectons jamais à votre serveur. Le README montre chaque étape, de la copie du script à son ajout dans cron (Premium).

Vous n’avez pas trouvé la réponse ?

Formules