Auto-discover Docker bind mounts and back them up to the cloud or locally.
DockerVault inspects all running Docker containers, groups their bind mounts by Docker Compose stack, compresses them into per-stack archives, and uploads them using eclone or rsync.
Descubre automáticamente los bind mounts de Docker y los respalda en la nube o localmente.
DockerVault inspecciona todos los contenedores Docker, agrupa sus bind mounts por stack de Docker Compose, los comprime en archivos por stack, y los sube usando eclone o rsync.
curl -fsSL https://raw.githubusercontent.com/ebadenes/DockerVault/main/install.sh | bashThis downloads the latest release binary for your OS/architecture into ~/.local/bin/. If no prebuilt binary is available, it falls back to building via Docker.
Descarga el binario de la última release para tu OS/arquitectura en ~/.local/bin/. Si no hay binario disponible, compila usando Docker.
git clone https://github.com/ebadenes/DockerVault.git
cd DockerVault
docker build --no-cache -f build/Dockerfile -t dockervault-build .
docker create --name dv-extract dockervault-build
docker cp dv-extract:/dockervault ./dockervault
docker rm dv-extract
./dockervault installdockervault run --remote drive:backupThis will:
- Discover all Docker bind mounts
- Group them by Docker Compose stack
- Compress each stack into
backup-{stack}-{timestamp}.tar.gz - Upload to
drive:backup/{hostname}/{date}/
Esto va a:
- Descubrir todos los bind mounts de Docker
- Agruparlos por stack de Docker Compose
- Comprimir cada stack en
backup-{stack}-{timestamp}.tar.gz - Subir a
drive:backup/{hostname}/{fecha}/
dockervault run --remote drive:backup --dry-runShows the execution plan without performing any actions. / Muestra el plan de ejecución sin hacer nada.
# Mounts starting with this prefix / Mounts que empiecen con este prefijo
dockervault run --remote drive:backup --path /home/user/Docker
# Mounts containing this string / Mounts que contengan este string
dockervault run --remote drive:backup --path-contains Docker
# Both combined (AND) / Ambos combinados (AND)
dockervault run --remote drive:backup --path /home --path-contains Dockerdockervault run --remote drive:backup --exclude portainer,plex,monitoringdockervault run --remote drive:backup --no-compressTransfers raw directories instead of creating archives. / Transfiere directorios sin comprimir.
dockervault run --remote user@server:/backups --method rsyncdockervault run --remote drive:backup --quietdockervault run --remote drive:backup --verbose| Command / Comando | Description / Descripción |
|---|---|
dockervault run |
Discover mounts and run backup / Descubrir mounts y ejecutar backup |
dockervault install |
Install binary to ~/.local/bin/ / Instalar binario en ~/.local/bin/ |
dockervault uninstall |
Remove binary from ~/.local/bin/ / Eliminar binario de ~/.local/bin/ |
dockervault update |
Self-update to latest GitHub release / Auto-actualizar a la última release |
dockervault version |
Show current version / Mostrar versión actual |
| Flag | Short | Default | Description / Descripción |
|---|---|---|---|
--remote |
(required) | Backup destination (eclone remote or rsync path) / Destino del backup | |
--method |
eclone |
Backup method: eclone or rsync / Método de backup |
|
--path |
Only mounts starting with this prefix / Solo mounts que empiecen con este prefijo | ||
--path-contains |
Only mounts containing this string / Solo mounts que contengan este string | ||
--exclude |
Exclude stacks by name (comma-separated) / Excluir stacks por nombre | ||
--no-compress |
false |
Transfer raw directories / Transferir sin comprimir | |
--dry-run |
-n |
false |
Show plan without executing / Mostrar plan sin ejecutar |
--verbose |
-v |
false |
Stream subprocess output / Mostrar salida de subprocesos |
--quiet |
-q |
false |
Suppress all output except errors / Suprimir toda salida excepto errores |
- Auto-discovery: Inspects all Docker containers via
docker inspectto find bind mounts - Stack grouping: Groups mounts by
com.docker.compose.projectlabel; standalone containers go to astandalonegroup - Per-stack compression: Creates
backup-{stack}-{timestamp}.tar.gzarchives in/tmp - Destination enrichment: Automatically appends
{hostname}/{date}to the remote path - Remote validation: Checks that the eclone remote is configured before starting
- Interactive eclone install: If eclone is missing, prompts to install it before doing any work
- Path filtering: Filter mounts by prefix (
--path) or substring (--path-contains) - Stack exclusion: Skip specific stacks with
--exclude - Dry run: Preview the full plan without executing anything
- Self-update:
dockervault updatedownloads the latest release from GitHub - Cross-platform: Releases for linux/amd64 and linux/arm64 via GitHub Actions
- Auto-descubrimiento: Inspecciona todos los contenedores Docker vía
docker inspectpara encontrar bind mounts - Agrupación por stack: Agrupa mounts por label
com.docker.compose.project; contenedores sueltos van al grupostandalone - Compresión por stack: Crea archivos
backup-{stack}-{timestamp}.tar.gzen/tmp - Enriquecimiento del destino: Agrega automáticamente
{hostname}/{fecha}a la ruta remota - Validación del remote: Verifica que el remote de eclone esté configurado antes de empezar
- Instalación interactiva de eclone: Si eclone no está instalado, ofrece instalarlo antes de hacer cualquier trabajo
- Filtrado de rutas: Filtrar mounts por prefijo (
--path) o substring (--path-contains) - Exclusión de stacks: Saltar stacks específicos con
--exclude - Simulación: Vista previa del plan completo sin ejecutar nada
- Auto-actualización:
dockervault updatedescarga la última release de GitHub - Multiplataforma: Releases para linux/amd64 y linux/arm64 vía GitHub Actions
# Daily backup at 3am / Backup diario a las 3am
0 3 * * * /home/user/.local/bin/dockervault run --remote drive:backup --quiet --path /home/user/Docker --exclude portainer 2>&1 | logger -t dockervault- Docker (for container discovery / para descubrimiento de contenedores)
- eclone or rsync (for transfers / para transferencias)
MIT