39 lines
2.2 KiB
Markdown
39 lines
2.2 KiB
Markdown
# Docker Backup App
|
|
|
|
⚠️ **AVISO CRÍTICO:** Esta é uma aplicação em estágio inicial de desenvolvimento, não use em produção de forma alguma, há risco de perda de dados ⚠️
|
|
|
|
Aplicacao web para cadastrar profiles de backup de containers Docker, executar backup full ou incremental e restaurar snapshots de volumes e bind mounts.
|
|
|
|
## Como funciona
|
|
|
|
- O app lista os containers via Docker socket.
|
|
- Cada backup processa um container por vez: para, executa o backup dos mounts elegiveis e sobe novamente se ele estava rodando.
|
|
- O backup usa um container auxiliar com GNU tar e `--listed-incremental` para gerar arquivos compactados `.tar.gz`.
|
|
- Quando o app roda dentro de Docker, backup e restore sao feitos via Docker API (`getArchive`/`putArchive`) sem criar helper e sem mapear o root do host.
|
|
- Ha dois escopos por profile: `somente volumes` (comportamento tradicional) e `container inteiro` (tar unico por container a partir de `/`).
|
|
- O restore aplica a cadeia full + incrementais sobre os mounts atuais do container, limpando o conteudo antes de reconstituir o snapshot escolhido.
|
|
- Ao restaurar um backup, e possivel escolher quais containers do backup serao restaurados.
|
|
|
|
## Requisitos
|
|
|
|
- Docker Engine com acesso ao socket em `/var/run/docker.sock`.
|
|
- O diretorio de backup informado no profile precisa ser visivel para o Docker daemon.
|
|
- Em Docker Desktop no Windows, quando o app roda fora de container, paths como `C:\backups` sao convertidos automaticamente para `/run/desktop/mnt/host/c/backups`.
|
|
- Quando o app roda dentro de container, use um caminho absoluto interno do container (ex.: `/app/data/backups`).
|
|
- O escopo `container inteiro` exige que o app esteja rodando em Docker para usar backup/restore nativos sem helper.
|
|
|
|
## Executando com Docker Compose
|
|
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
Abra `http://localhost:3000`.
|
|
|
|
O arquivo `docker-compose.example.yml` foi mantido como referencia equivalente ao compose principal.
|
|
|
|
## Observacoes
|
|
|
|
- O restore valida se o conjunto de mounts do container continua igual ao do backup selecionado.
|
|
- O catalogo de profiles e historico de backups fica salvo em `./data/store.json`.
|
|
- Os arquivos `.tar.gz` sao gravados no diretorio de backup configurado em cada profile. |