# fernandoaab/backup architecture

> Architecture diagram of the GitHub repository fernandoaab/backup, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fernandoaab/backup
- Repository: https://github.com/fernandoaab/backup

## Overview

Compactador de pastas que cria um único ZIP com múltiplas origens, manualmente pela interface gráfica ou automaticamente a cada cinco execuções diárias do script em segundo plano. O fluxo manual configura origens e destino, persiste as escolhas, copia as pastas, compacta e exibe histórico e progresso. O fluxo agendado lê a mesma configuração, avança um contador e, quando chega ao limite, limpa backups antigos, gera o ZIP e registra a execução. Os dois scripts implementam cópia e compactação separadamente; os detalhes da interface foram amostrados parcialmente.

Main entry points: [`zip_main.py`](https://github.com/fernandoaab/backup/blob/main/zip_main.py) (Interface gráfica), [`background_zip.py`](https://github.com/fernandoaab/backup/blob/main/background_zip.py) (Leitura da configuração), [`config.json`](https://github.com/fernandoaab/backup/blob/main/config.json) (Configuração)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_manual["Backup manual"]
  node_gui["Interface gráfica<br/>[zip_main.py]"]
  node_manual_worker["Worker de backup<br/>[zip_main.py]"]
  node_history["Histórico de backups<br/>[zip_main.py]"]
end

subgraph group_scheduled["Backup agendado"]
  node_daemon["Execução agendada<br/>[background_zip.py]"]
  node_auto_config["Leitura da configuração<br/>[background_zip.py]"]
  node_cleanup["Limpeza de ZIPs antigos<br/>[background_zip.py]"]
  node_auto_copy["Cópia de pastas<br/>[background_zip.py]"]
  node_auto_archive["Criação do ZIP<br/>[background_zip.py]"]
end

subgraph group_storage["Dados e arquivos"]
  node_settings["Configuração<br/>[config.json]"]
  node_manual_sources["Pastas de origem"]
  node_manual_destination["Destino dos ZIPs"]
  node_counter["Contador de dias"]
  node_log["Log de execução"]
end

node_user(("Usuário"))
node_scheduler(("Agendador do sistema"))

node_user -->|"configura e inicia"| node_gui
node_gui -->|"lê e grava"| node_settings
node_gui -->|"inicia thread"| node_manual_worker
node_manual_worker -->|"copia"| node_manual_sources
node_manual_worker -->|"grava ZIP"| node_manual_destination
node_gui -->|"consulta ZIPs"| node_manual_destination
node_gui -->|"exibe histórico"| node_history
node_scheduler -->|"executa diariamente"| node_daemon
node_daemon -->|"lê e atualiza"| node_counter
node_daemon -->|"aciona ao limite"| node_auto_config
node_auto_config -->|"lê"| node_settings
node_auto_config -->|"prepara destino"| node_cleanup
node_cleanup -->|"remove ZIPs antigos"| node_manual_destination
node_auto_config -->|"fornece origens"| node_auto_copy
node_auto_copy -->|"copia"| node_manual_sources
node_auto_config -->|"fornece destino"| node_auto_archive
node_auto_archive -->|"grava ZIP"| node_manual_destination
node_daemon -->|"registra execução"| node_log

click node_gui "https://github.com/fernandoaab/backup/blob/main/zip_main.py"
click node_settings "https://github.com/fernandoaab/backup/blob/main/config.json"
click node_manual_worker "https://github.com/fernandoaab/backup/blob/main/zip_main.py"
click node_history "https://github.com/fernandoaab/backup/blob/main/zip_main.py"
click node_daemon "https://github.com/fernandoaab/backup/blob/main/background_zip.py"
click node_auto_config "https://github.com/fernandoaab/backup/blob/main/background_zip.py"
click node_cleanup "https://github.com/fernandoaab/backup/blob/main/background_zip.py"
click node_auto_copy "https://github.com/fernandoaab/backup/blob/main/background_zip.py"
click node_auto_archive "https://github.com/fernandoaab/backup/blob/main/background_zip.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gui,node_manual_worker,node_history toneBlue
class node_daemon,node_auto_config,node_cleanup,node_auto_copy,node_auto_archive toneAmber
class node_settings,node_manual_sources,node_manual_destination,node_counter,node_log toneMint
class node_user,node_scheduler toneIndigo
```

## Components

### Backup manual

- [Interface gráfica](https://github.com/fernandoaab/backup/blob/main/zip_main.py): `zip_main.py`
- [Worker de backup](https://github.com/fernandoaab/backup/blob/main/zip_main.py): `zip_main.py`
- [Histórico de backups](https://github.com/fernandoaab/backup/blob/main/zip_main.py): `zip_main.py`

### Backup agendado

- [Execução agendada](https://github.com/fernandoaab/backup/blob/main/background_zip.py): `background_zip.py`
- [Leitura da configuração](https://github.com/fernandoaab/backup/blob/main/background_zip.py): `background_zip.py`
- [Limpeza de ZIPs antigos](https://github.com/fernandoaab/backup/blob/main/background_zip.py): `background_zip.py`
- [Cópia de pastas](https://github.com/fernandoaab/backup/blob/main/background_zip.py): `background_zip.py`
- [Criação do ZIP](https://github.com/fernandoaab/backup/blob/main/background_zip.py): `background_zip.py`

### Dados e arquivos

- [Configuração](https://github.com/fernandoaab/backup/blob/main/config.json): `config.json`
- **Pastas de origem**
- **Destino dos ZIPs**
- **Contador de dias**
- **Log de execução**

### Other components

- **Usuário**
- **Agendador do sistema**

## Connections

- Usuário → Interface gráfica: configura e inicia
- Interface gráfica → Configuração: lê e grava
- Interface gráfica → Worker de backup: inicia thread
- Worker de backup → Pastas de origem: copia
- Worker de backup → Destino dos ZIPs: grava ZIP
- Interface gráfica → Destino dos ZIPs: consulta ZIPs
- Interface gráfica → Histórico de backups: exibe histórico
- Agendador do sistema → Execução agendada: executa diariamente
- Execução agendada → Contador de dias: lê e atualiza
- Execução agendada → Leitura da configuração: aciona ao limite
- Leitura da configuração → Configuração: lê
- Leitura da configuração → Limpeza de ZIPs antigos: prepara destino
- Limpeza de ZIPs antigos → Destino dos ZIPs: remove ZIPs antigos
- Leitura da configuração → Cópia de pastas: fornece origens
- Cópia de pastas → Pastas de origem: copia
- Leitura da configuração → Criação do ZIP: fornece destino
- Criação do ZIP → Destino dos ZIPs: grava ZIP
- Execução agendada → Log de execução: registra execução
