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