Script di backup del databaseSviluppo e personalizzazione

Uno script Bash o Python che fa il backup del suo database MySQL o PostgreSQL e conserva solo le copie che sceglie

Di solito pronto in 15 minutiRevisioni incluseControllo di qualità
Pacchetti
Pagamento protettoDettagli
  • Le revisioni previste dal pacchetto sono gratuite.
  • Se non risponde entro 3 giorni dalla consegna, il lavoro viene accettato automaticamente.

Il denaro viene riservato al momento del pagamento e sbloccato solo quando accetta il lavoro.

Uno script Bash o Python che fa il backup del suo database MySQL o PostgreSQL e conserva solo le copie che sceglie

Esempio di risultato

Esempio per il pacchetto Standard

Unire i file mensili delle vendite di 9 negozi in un unico report Excel

Come si esegue

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Cartella: sales/2026-10, 9 file trovati
2026-11-02 09:14:03 INFO  shop-01.csv: 1.284 righe
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 righe
2026-11-02 09:14:04 WARN  shop-07.csv: saltate 3 righe senza prezzo (righe 88, 412, 913)
2026-11-02 09:14:05 INFO  Fatto: 10.412 righe -> report-2026-10.xlsx (fogli "Vendite" e "Totali")

Impostazioni, non codice

I nomi delle colonne di ogni negozio si trovano in settings.ini, quindi un nuovo negozio o una colonna rinominata è una riga lì:

[columns]
date = Data, Data vendita, Giorno
product = Prodotto, Articolo, Descrizione
quantity = Q.tà, Quantità, Pz
price = Prezzo, Prezzo unitario

Una parte del codice

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Legge il file di un negozio e gli dà i nomi di colonna del report."""
    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}: nessuna colonna per '{name}' (cercate: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

File: un archivio ZIP con merge_sales.py (310 righe), settings.ini, requirements.txt e un README su come installare Python, eseguire lo script e cosa significa ogni messaggio del registro. Il cliente lo esegue sul proprio computer.

Cliente: una piccola catena di 9 cartolerie; ogni negozio invia le vendite del mese in un file CSV o Excel, con nomi di colonna leggermente diversi. Compito: un unico script che legge tutti i file di una cartella, porta le colonne a una stessa forma e scrive un solo report Excel con tutte le vendite e un foglio di totali per negozio.

Il cliente e tutti i dati sono inventati.

Informazioni sul servizio

Un database senza copie regolari è a un aggiornamento sbagliato o a un disco pieno dal perdere ordini, articoli o dati dei clienti. Questo script, in Bash o Python a seconda del suo server, crea un dump completo del suo database MySQL, MariaDB o PostgreSQL con gli strumenti che lo accompagnano (mysqldump o pg_dump), lo comprime, gli dà un nome con la data e conserva solo le copie previste dalle sue regole, per esempio 7 giornaliere, 4 settimanali e 6 mensili; quelle più vecchie vengono rimosse solo secondo quelle regole. La password del database va nel file di opzioni standard che compila lei sul server (.my.cnf o .pgpass), mai nel codice. Lo installa ed esegue lei sul suo server; noi non vi accediamo mai. Lo provi prima su una copia di prova e ripristini un backup in un database di prova per verificare che funzioni.

Cosa è incluso

  • Cosa riceveUn archivio ZIP con lo script, un README con le istruzioni passo passo e, dallo Standard, un file di impostazioni con database, cartelle e numero di copie da conservare; il codice è visibile anche nella pagina dell'ordine.
  • Strumenti standardmysqldump o pg_dump, niente di strano da installare
  • Rotazione secondo le sue regoleCopie vecchie rimosse solo come imposta lei
  • Password fuori dal codiceIn .my.cnf o .pgpass sul suo server
  • Errori rilevatiDallo Standard, un dump fallito o vuoto finisce nel log e non conta come copia
  • Codice leggibileCon commenti, facile aggiungere un database in seguito

Come funziona

  1. 1
    CompitoLei descrive il server, i database e quante copie conservare
  2. 2
    CodiceScriviamo lo script e la guida all'installazione
  3. 3
    Lo proviLo esegue su una copia di prova e ripristina un backup in un database di prova
  4. 4
    ModificheChiede modifiche nei limiti del pacchetto e invia eventuali messaggi di errore

Cosa ci serve da lei

Il database (MySQL, MariaDB o PostgreSQL) e la sua versione, il sistema del server (per esempio Ubuntu 22.04) e se può installarvi pacchetti, quanto è grande il database, dove salvare le copie e quanto spazio c'è. Le sue regole di rotazione: quante copie giornaliere, settimanali e mensili conservare. Per il Premium, la seconda destinazione delle copie e l'indirizzo per le email di errore. Non invii mai password né accessi al server.

Le chiederemo:

  • Quale database, e quanto è grande?
  • Su quale server si trova?
  • Quante copie conservare?
  • Dove devono andare le copie?
  • Bash o Python?

Confronto dei pacchetti

PacchettiBaseUn database15 €StandardBackup con impostazioni30 €PremiumStrumento di backup60 €
Tempi di consegna1 giorno2 giorni3 giorni
Revisioni123
Codicefino a 150 righefino a 400 righefino a 1.000 righe
File di codice1fino a 3fino a 8
File di impostazioniNoSìSì
Messaggi di errore chiari e un logNoSìSì
Opzioni di avvio e una guida per eseguirlo a orari programmatiNoNoSì
Guida all'installazione e all'avvio (README)SìSìSì
LinguaggioBash o PythonBash o PythonBash o Python
Ordina BaseOrdina StandardOrdina Premium

Pagamento protetto

Paga al momento dell'ordine, ma il denaro viene sbloccato solo per un lavoro accettato.

  • Prezzo fissoIl prezzo del pacchetto non cambia dopo il pagamento.
  • Il denaro viene riservatoAl pagamento, l'importo viene solo riservato. Passa a Dleex quando accetta il lavoro.
  • Verificato prima della consegnaOgni risultato passa un controllo di qualità prima di arrivare a lei, e lo vede nella pagina dell'ordine prima di accettarlo.
  • Revisioni gratuiteRichieda revisioni nell'ambito del suo brief tante volte quante ne prevede il pacchetto.
  • Accettazione dopo 3 giorniSe entro 3 giorni dalla consegna non accetta il lavoro né richiede una revisione, il lavoro viene accettato automaticamente. Se scrive nella chat dell'ordine dopo la consegna, l'ordine resta in attesa; dopo la nostra risposta potremmo far ripartire i 3 giorni e glielo indicheremo nella chat.
  • Rifacimento o rimborso totaleSe il risultato non corrisponde al suo brief e le revisioni non hanno risolto il problema, oppure il lavoro richiede più del doppio dei tempi di consegna previsti, scriva nella chat dell'ordine: rifaremo il lavoro o le rimborseremo l'intero pagamento.
Come funziona →

Domande e risposte

Eliminerà i backup vecchi?

Solo secondo le regole che indica, come conservare 7 copie giornaliere e 4 settimanali, e solo nella cartella di backup in cui scrive. Finché non imposta le regole, conserva tutto.

Posso tenere le copie fuori dal server?

Il Premium copia ogni backup su un secondo disco o su uno spazio di archiviazione che già possiede, usando il suo strumento da riga di comando e le sue chiavi, che inserisce lei nelle impostazioni.

Blocca il sito mentre è in esecuzione?

Per le tabelle InnoDB in MySQL e per PostgreSQL il dump viene fatto senza fermare il sito. I database molto grandi possono comunque rallentarlo, quindi lo esegua in un orario tranquillo.

Lo configurerete voi sul mio server?

No. Non accediamo mai al suo server. Il README mostra ogni passaggio, dalla copia dello script alla sua aggiunta in cron (Premium).

Non hai trovato la risposta?

Pacchetti