Co-authored-by: Copilot <copilot@github.com> |
||
|---|---|---|
| public | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| README.md | ||
| docker-compose.example.yml | ||
| docker-compose.yml | ||
| package-lock.json | ||
| package.json | ||
README.md
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-incrementalpara 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) econtainer 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:\backupssao 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 inteiroexige que o app esteja rodando em Docker para usar backup/restore nativos sem helper.
Executando com Docker Compose
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.gzsao gravados no diretorio de backup configurado em cada profile.