Introduzione

In questo tutorial ti guideremo attraverso il processo di creazione di backup giornalieri automatici dei tuoi database Odoo. Odoo è il sistema ERP open source più popolare scritto in Python e utilizza PostgreSQL come back-end del database.

Odoo sta memorizzando i suoi dati in un database PostgreSQL. Il backup regolare del database ti proteggerà da una perdita di dati potenzialmente catastrofica ed è assolutamente fondamentale per chiunque disponga di un'installazione Odoo.

Interfaccia di gestione del database Odoo

L'interfaccia di gestione del database Odoo fornisce strumenti per il backup, la duplicazione, l'eliminazione, la creazione e il ripristino di un database. La creazione di un backup tramite l'interfaccia di gestione del database è un gioco da ragazzi. Basta aprire il browser e accedere a http://DOMINIO_O_IP:8069/web/database/manager.

Fare clic sul collegamento Backup e verrà visualizzato un nuovo popup.

Immettere la password principale del database Odoo e creare un backup facendo clic sul pulsante blu Backup.

A seconda delle dimensioni del database, il backup potrebbe richiedere del tempo prima di essere pronto.

Creare un backup del database dalla riga di comando

Ora che sappiamo come creare un backup tramite l'interfaccia di gestione del database Odoo, possiamo usare lo stesso strumento per creare un backup dalla riga di comando utilizzando wget o curl. Entrambi gli strumenti possono inviare dati con POST che possiamo usare per passare le variabili necessarie allo strumento di database Odoo.

Nell'esempio che segue la Master Password è ADMIN_PASSWORD e stiamo creando un file di backup back_up_filename.zip di un database denominato DB_NAME che verrà salvato nella directory backup_dir.

curl -X POST -F 'master_pwd=ADMIN_PASSWORD' -F 'name=DB_NAME' -F 'backup_format=zip' -o /backup_dir/back_up_filename.zip http://localhost:8069/web/database/backup

Se si preferisce wget invece di curl, è possibile utilizzare il seguente comando:

wget --post-data 'master_pwd=ADMIN_PASSWORD&name=DB_NAME&backup_format=zip' -O /backup_dir/back_up_filename.zip http://localhost:8069/web/database/backup

Se desideri creare un backup da una posizione remota invece di inserire localhost, inserisci l''host della tua istanza Odoo. In questo caso, si consiglia di utilizzare HTTPS perché non si desidera che la password venga inviata tramite Internet come testo normale.

Configurare il backup automatico di Odoo

Per automatizzare il processo di backup e eseguire il backup del nostro database Odoo a intervalli regolari, possiamo creare un processo cron.

Diciamo che vogliamo fare il backup del nostro database Odoo ogni giorno 01:30 am e conservare gli ultimi 7 backup.

Creeremo un semplice script bash che puoi nominare come vuoi:

sudo nano bk_odoo.sh
#!/bin/bash

# vars
BACKUP_DIR=~/odoo_backups
ODOO_DATABASE=db1
ADMIN_PASSWORD=superadmin_passwd

# create a backup directory
mkdir -p ${BACKUP_DIR}

# create a backup
curl -X POST \
    -F "master_pwd=${ADMIN_PASSWORD}" \
    -F "name=${ODOO_DATABASE}" \
    -F "backup_format=zip" \
    -o ${BACKUP_DIR}/${ODOO_DATABASE}.$(date +%F).zip \
    http://localhost:8069/web/database/backup


# delete old backups
find ${BACKUP_DIR} -type f -mtime +7 -name "${ODOO_DATABASE}.*.zip" -delete

Salva e chiudi il file.

Rendi eseguibile lo script con chmod:

sudo chmod +x ~/bk_odoo.sh

Non dimenticare di cambiare le variabili BACKUP_DIR, ODOO_DATABASE e ADMIN_PASSWORD in base alle vostre esigenze.

L'ultimo passo è creare un nuovo cron job che verrà eseguito ogni giorno alle 01:30 am:

crontab -e
30 1 * * * /home/<yourusername>/bk_odoo.sh

Non dimenticare di impostare il nome e il percorso corretti per lo script di backup.

È possibile modificare lo script e implementare una soluzione di backup più solida, ad esempio l'utilizzo di una memoria di backup remota, mantenere backup settimanali e mensili e altro ancora.

Ripristinare un database Odoo

Per ripristinare un backup del database utilizzando l'interfaccia di gestione del database, aprire il browser e accedere a http://DOMINIO_O_IP:8069/web/database/manager.

Fare clic sul pulsante Restore Database e verrà visualizzato un nuovo popup.

Immettere la password principale del database Odoo, selezionare il file di backup, immettere il nuovo nome del database e ripristinare il database facendo clic sul pulsante blu Continue.

Prima di ripristinare il database è necessario eliminare il database o utilizzare un altro nome di database.

A seconda delle dimensioni del database e della velocità di Internet, il processo di ripristino potrebbe richiedere del tempo.

Possiamo anche ripristinare il database dalla riga di comando:

curl -F 'master_pwd=superadmin_passwd' -F [email protected]/opt/odoo/odoo_backups/db1.2018-04-14.zip -F 'copy=true' -F 'name=db3' http://localhost:8069/web/database/restore

Ovviamente dovrai adattare il comando con la tua password Odoo Master, il percorso per il backup del database e il nome del database.

Se il ripristino ha esito positivo, l'output dovrebbe essere simile al seguente:

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="/web/database/manager">/web/database/manager</a>.  If not click the link.

Conclusione

Questo tutorial ti ha guidato attraverso la creazione di backup giornalieri automatici dei tuoi database Odoo usando un cronjob.