utilities.database_backup
1from dictionary.vars import operational_system, today, absolute_app_path 2from dictionary.vars import db_user, db_password, db_database 3from functions.get_actual_time import GetActualTime 4from pathlib import Path 5from time import sleep 6import os 7import streamlit as st 8import subprocess 9 10 11class Backup: 12 """ 13 Classe com métodos para realização do backup da base de dados da aplicação. 14 """ 15 16 def make_backup(self, backup_path: str, operational_system: str = operational_system): 17 """ 18 Realiza o backup da base de dados da aplicação. 19 20 Parameters 21 ---------- 22 backup_path : str 23 Diretório em qual o backup será salvo. 24 operational_system : str 25 Sistema operacional sobre o qual a aplicação está sendo executado. 26 """ 27 28 time = GetActualTime() 29 actual_time = time.get_actual_time() 30 actual_time = actual_time.replace(":", "_") 31 32 directory_command = "cd " + backup_path 33 backup_archive_name = "backup_{}_{}_{}.sql".format( 34 db_database, today, actual_time 35 ) 36 backup_command = "mysqldump -u{} -p{} --databases {} >> {}".format( 37 db_user, db_password, db_database, backup_archive_name 38 ) 39 40 if operational_system == "posix": 41 backup_shell_script_name = absolute_app_path + "/services/temp_backup.sh" 42 with open(backup_shell_script_name, "w") as backup_archive: 43 backup_archive.write("#!/bin/bash") 44 backup_archive.write("\n") 45 backup_archive.write(directory_command) 46 backup_archive.write("\n") 47 backup_archive.write("sleep 1") 48 backup_archive.write("\n") 49 backup_archive.write(backup_command) 50 backup_archive.write("\n") 51 backup_archive.write("sleep 1") 52 53 modified_archive = Path(backup_shell_script_name) 54 modified_archive.chmod(0o777) 55 56 with st.spinner(text="Navegando ao diretório {}...".format(backup_path)): 57 sleep(2.5) 58 with st.spinner(text="Realizando o backup do arquivo {}...".format(backup_archive_name)): 59 sleep(2.5) 60 try: 61 subprocess.run(["bash", backup_shell_script_name], 62 check=True, text=True, capture_output=True) 63 os.remove(backup_shell_script_name) 64 absolute_backup_archive_path = backup_path + "/" + backup_archive_name 65 modified_backup_archive = Path(absolute_backup_archive_path) 66 modified_backup_archive.chmod(0o777) 67 st.info(body="O arquivo {} foi salvo no diretório {}.".format( 68 backup_archive_name, backup_path)) 69 70 except subprocess.CalledProcessError as error: 71 st.error(body="Erro ao executar o script: {}".format(error.stderr)) 72 73 def main_menu(self): 74 """ 75 Menu do backup de dados. 76 """ 77 col4, col5 = st.columns(2) 78 79 with col4: 80 if operational_system == "posix": 81 placeholder_text = "Ex: /home/'usuario'/Downloads" 82 elif operational_system == "nt": 83 placeholder_text = "Ex: C:\\Users\\usuario\\Downloads" 84 with st.expander(label=":floppy_disk: Backup de dados", expanded=True): 85 backup_directory = st.text_input(label="Diretório de backup", placeholder=placeholder_text) 86 backup_confirm_button = st.button(label=":white_check_mark: Confirmar diretório") 87 88 if backup_confirm_button: 89 with col5: 90 with st.spinner(text="Aguarde..."): 91 sleep(2.5) 92 93 with st.status(label="Dados", expanded=True): 94 95 if backup_directory != "": 96 if os.path.exists(backup_directory): 97 self.make_backup(backup_directory) 98 else: 99 st.error(body="O diretório {} não existe em sua máquina. Informe um diretório real.".format(backup_directory)) 100 elif backup_directory == "": 101 st.error(body="O caminho do diretório está vazio ou não preenchido.")
class
Backup:
12class Backup: 13 """ 14 Classe com métodos para realização do backup da base de dados da aplicação. 15 """ 16 17 def make_backup(self, backup_path: str, operational_system: str = operational_system): 18 """ 19 Realiza o backup da base de dados da aplicação. 20 21 Parameters 22 ---------- 23 backup_path : str 24 Diretório em qual o backup será salvo. 25 operational_system : str 26 Sistema operacional sobre o qual a aplicação está sendo executado. 27 """ 28 29 time = GetActualTime() 30 actual_time = time.get_actual_time() 31 actual_time = actual_time.replace(":", "_") 32 33 directory_command = "cd " + backup_path 34 backup_archive_name = "backup_{}_{}_{}.sql".format( 35 db_database, today, actual_time 36 ) 37 backup_command = "mysqldump -u{} -p{} --databases {} >> {}".format( 38 db_user, db_password, db_database, backup_archive_name 39 ) 40 41 if operational_system == "posix": 42 backup_shell_script_name = absolute_app_path + "/services/temp_backup.sh" 43 with open(backup_shell_script_name, "w") as backup_archive: 44 backup_archive.write("#!/bin/bash") 45 backup_archive.write("\n") 46 backup_archive.write(directory_command) 47 backup_archive.write("\n") 48 backup_archive.write("sleep 1") 49 backup_archive.write("\n") 50 backup_archive.write(backup_command) 51 backup_archive.write("\n") 52 backup_archive.write("sleep 1") 53 54 modified_archive = Path(backup_shell_script_name) 55 modified_archive.chmod(0o777) 56 57 with st.spinner(text="Navegando ao diretório {}...".format(backup_path)): 58 sleep(2.5) 59 with st.spinner(text="Realizando o backup do arquivo {}...".format(backup_archive_name)): 60 sleep(2.5) 61 try: 62 subprocess.run(["bash", backup_shell_script_name], 63 check=True, text=True, capture_output=True) 64 os.remove(backup_shell_script_name) 65 absolute_backup_archive_path = backup_path + "/" + backup_archive_name 66 modified_backup_archive = Path(absolute_backup_archive_path) 67 modified_backup_archive.chmod(0o777) 68 st.info(body="O arquivo {} foi salvo no diretório {}.".format( 69 backup_archive_name, backup_path)) 70 71 except subprocess.CalledProcessError as error: 72 st.error(body="Erro ao executar o script: {}".format(error.stderr)) 73 74 def main_menu(self): 75 """ 76 Menu do backup de dados. 77 """ 78 col4, col5 = st.columns(2) 79 80 with col4: 81 if operational_system == "posix": 82 placeholder_text = "Ex: /home/'usuario'/Downloads" 83 elif operational_system == "nt": 84 placeholder_text = "Ex: C:\\Users\\usuario\\Downloads" 85 with st.expander(label=":floppy_disk: Backup de dados", expanded=True): 86 backup_directory = st.text_input(label="Diretório de backup", placeholder=placeholder_text) 87 backup_confirm_button = st.button(label=":white_check_mark: Confirmar diretório") 88 89 if backup_confirm_button: 90 with col5: 91 with st.spinner(text="Aguarde..."): 92 sleep(2.5) 93 94 with st.status(label="Dados", expanded=True): 95 96 if backup_directory != "": 97 if os.path.exists(backup_directory): 98 self.make_backup(backup_directory) 99 else: 100 st.error(body="O diretório {} não existe em sua máquina. Informe um diretório real.".format(backup_directory)) 101 elif backup_directory == "": 102 st.error(body="O caminho do diretório está vazio ou não preenchido.")
Classe com métodos para realização do backup da base de dados da aplicação.
def
make_backup(self, backup_path: str, operational_system: str = 'posix'):
17 def make_backup(self, backup_path: str, operational_system: str = operational_system): 18 """ 19 Realiza o backup da base de dados da aplicação. 20 21 Parameters 22 ---------- 23 backup_path : str 24 Diretório em qual o backup será salvo. 25 operational_system : str 26 Sistema operacional sobre o qual a aplicação está sendo executado. 27 """ 28 29 time = GetActualTime() 30 actual_time = time.get_actual_time() 31 actual_time = actual_time.replace(":", "_") 32 33 directory_command = "cd " + backup_path 34 backup_archive_name = "backup_{}_{}_{}.sql".format( 35 db_database, today, actual_time 36 ) 37 backup_command = "mysqldump -u{} -p{} --databases {} >> {}".format( 38 db_user, db_password, db_database, backup_archive_name 39 ) 40 41 if operational_system == "posix": 42 backup_shell_script_name = absolute_app_path + "/services/temp_backup.sh" 43 with open(backup_shell_script_name, "w") as backup_archive: 44 backup_archive.write("#!/bin/bash") 45 backup_archive.write("\n") 46 backup_archive.write(directory_command) 47 backup_archive.write("\n") 48 backup_archive.write("sleep 1") 49 backup_archive.write("\n") 50 backup_archive.write(backup_command) 51 backup_archive.write("\n") 52 backup_archive.write("sleep 1") 53 54 modified_archive = Path(backup_shell_script_name) 55 modified_archive.chmod(0o777) 56 57 with st.spinner(text="Navegando ao diretório {}...".format(backup_path)): 58 sleep(2.5) 59 with st.spinner(text="Realizando o backup do arquivo {}...".format(backup_archive_name)): 60 sleep(2.5) 61 try: 62 subprocess.run(["bash", backup_shell_script_name], 63 check=True, text=True, capture_output=True) 64 os.remove(backup_shell_script_name) 65 absolute_backup_archive_path = backup_path + "/" + backup_archive_name 66 modified_backup_archive = Path(absolute_backup_archive_path) 67 modified_backup_archive.chmod(0o777) 68 st.info(body="O arquivo {} foi salvo no diretório {}.".format( 69 backup_archive_name, backup_path)) 70 71 except subprocess.CalledProcessError as error: 72 st.error(body="Erro ao executar o script: {}".format(error.stderr))
Realiza o backup da base de dados da aplicação.
Parameters
- backup_path (str): Diretório em qual o backup será salvo.
- operational_system (str): Sistema operacional sobre o qual a aplicação está sendo executado.