Ways to backup a odoo database

Install anonfiles patched version:

pip3 install git+https://github.com/EstebanMonge/anonfiles.git
from datetime import datetime
from anonfiles import upload
import xmlrpc.client
import base64
import os
import smtplib
import ssl

#Please modify as you wish
backup_all_databases = False
port = 465  # For SSL
smtp_server = "smtp.mailgun.org"
sender_email = ""  # Enter your address
receiver_email = ""  # Enter receiver address
password = ""
odoo_url = ''
all_database = ['']
today = datetime.today()
today_string = today.strftime("%Y-%m-%d")

#Danger to modify
if os.path.exists('urls.txt'):
    os.remove('urls.txt')
    print("Remove previous URLs file")
try:
    sock = xmlrpc.client.ServerProxy(odoo_url) #Real public IP
    if backup_all_databases:
        all_database = sock.list()
except:
    print("Something is wrong when I try to create the database list")

for database in all_database:
    print("Making backup of: " + database)
    file_path = "/tmp/backups-" + today_string #Give path of folder where backup file will be store
    try:
        if not os.path.exists(file_path):
            os.makedirs(file_path)
            print("The backup directory is created!")
    except:
        print("Something is wrong when I try to create the backup directory")
    file_path += "/" + database
    file_path += "-" + today_string
    file_path += ".zip"
    file_name = database + "-" + today_string + ".zip"
#    try:
    backup_db_file = open(file_path, 'wb')
    backup_db_file.write(base64.b64decode(sock.dump('password', database, 'zip'))) #admin is master password in my case
    backup_db_file.close()
    print("Backup of database " + database + " was stored on " + file_path)
#    except:
#        print("Something is wrong when I try to save the database to local path")
    try:
        upload([file_path])
    except:
        print("Something is wrong when I try to upload the database to anonfiles")
try:
    message = """\
              Subject: Sempai Space - Database backup - """ + today_string + """

Hi:

Below you will find the URL to access the today's backups:\n"""
    with open('urls.txt', 'r') as file:
        message += file.read()
    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
         server.login(sender_email, password)
         server.sendmail(sender_email, receiver_email, message)
except:
    print("Something is wrong when I try to send the mail with the database backup information")
backup_odoo_database.txt · Last modified: 2023/12/21 17:55
Public Domain Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain