Se você é como eu, prefere rodar tudo em contêineres Docker. Eles são rápidos, isolados e perfeitos para rodar vários apps em uma única VPS.
Mas o que acontece quando você quer:
- Mover um contêiner para um servidor novo?
- Fazer backup de um volume de banco de dados (NextCloud, PhotoPrism, Vaultwarden etc.)?
- Restaurar dados depois de uma pane?
O Docker não tem um botão de “exportar volume” — mas existe um truque superssimples e confiável usando um contêiner Ubuntu temporário.
Vamos lá!
Passo 1: Liste seus volumes
docker volume ls
Exemplo de saída:
DRIVER VOLUME NAME
local nextcloud_data
local photoprism_storage
local vaultwarden_data
Escolha o que você quer exportar (por exemplo, nextcloud_data).
Passo 2: Exporte um volume → backup.tar.gz
Rode este comando de uma linha (troque nextcloud_data pelo nome do seu volume):
docker run --rm -v nextcloud_data:/data -v "$(pwd)":/backup ubuntu \
tar -czf /backup/nextcloud-data-backup.tar.gz -C /data ./
O que ele faz:
- Monta o seu volume em /data dentro de um contêiner temporário
- Monta a sua pasta atual em /backup
- Cria um arquivo compactado com o volume inteiro
Quando terminar, você terá um arquivo como: nextcloud-data-backup.tar.gz ← pronto para baixar ou mover!
Dica de mestre: adicione a data para ficar mais claro
docker run --rm -v nextcloud_data:/data -v "$(pwd)":/backup ubuntu \
tar -czf "/backup/nextcloud-data-$(date +%Y-%m-%d).tar.gz" -C /data ./
Passo 3: Importe no servidor novo
- Copie o arquivo backup.tar.gz para o servidor novo (via scp, rsync etc.)
Depois, crie o volume vazio (importante!):
docker volume create nextcloud_data
Rode o comando de importação (a partir da pasta que contém o arquivo de backup):
docker run --rm -v nextcloud_data:/data -v "$(pwd)":/backup ubuntu \
tar -xzf /backup/nextcloud-data-2025-04-05.tar.gz -C /data
Pronto! Seu volume foi totalmente restaurado.
Nunca deixe o Docker criar o volume automaticamente durante a importação — isso pode causar problemas de permissão ou de mistura de dados.
Bônus: usando volumes externos com o Docker Compose
Se você usa docker-compose.yml, avise o Docker que o volume é externo (já existe):
services:
nextcloud:
image: nextcloud:latest
volumes:
- nextcloud_data:/var/www/html
volumes:
nextcloud_data:
external: true
A indentação importa — use exatamente dois espaços.
Casos de uso reais
- Migrar o NextCloud para uma VPS nova
- Fazer backup do Vaultwarden antes de atualizar
- Mover a biblioteca do PhotoPrism para um servidor maior
- Recuperação de desastres
Este método é 100% confiável, funciona com qualquer volume e não exige nenhuma ferramenta extra.
Agora você tem uma estratégia de backup de volumes Docker à prova de balas.
Boa conteinerização! 🐳
Obrigado pela leitura!