Configuração de Storage
BackupAlly suporta múltiplos backends de armazenamento.
Backends Disponíveis
| Backend | Driver | Status |
|---|---|---|
| Sistema de arquivos local | local |
Disponível |
| AWS S3 | s3 |
Disponível |
| Backblaze B2 | b2 |
Disponível |
| MinIO | minio |
Disponível |
Múltiplos Storages
Cada task pode enviar backups para múltiplos destinos:
[[storage]]
id = "primary"
driver = "s3"
# ...
[[storage]]
id = "secondary"
driver = "b2"
# ...Os uploads são feitos em paralelo para todos os storages configurados.
Local
Sistema de arquivos local.
[[storage]]
id = "local-backup"
driver = "local"
path = "/backup/data"
permissions = "0750"
retention = "daily 7, weekly 4"| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
path |
string | Sim | Diretório de destino |
permissions |
string | Não | Permissões (padrão: 0750) |
retention |
string | Não | Política de retenção |
Só
pathbasta (desde 0.35.0). O driverlocalnão exige maisbucket— antes, uma task que só declaravapathfalhava ao carregar commissing field bucket, mesmobucketnão fazendo sentido nenhum para filesystem local.
Para storage download/restore --from-storage conseguirem achar o arquivo
a partir da raiz do storage (não só pelo nome), use raízes absolutas e
profundas e dedicadas ao BackupAlly, nunca uma raiz rasa como /var — ver
limitações de segurança.
AWS S3
Amazon S3 e serviços compatíveis.
[[storage]]
id = "s3-backup"
driver = "s3"
bucket = "my-backups"
region = "us-east-1"
path = "backups/${hostname}/${target}/${date}"
access_key = "${secret:aws_access_key}"
secret_key = "${secret:aws_secret_key}"
storage_class = "STANDARD_IA"
server_side_encryption = "AES256"
retention = "daily 7, weekly 4, monthly 6"| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
bucket |
string | Sim | Nome do bucket |
region |
string | Sim | Região AWS |
path |
string | Não | Prefixo no bucket |
access_key |
string | Sim | AWS Access Key |
secret_key |
string | Sim | AWS Secret Key |
storage_class |
string | Não | Classe de storage |
server_side_encryption |
string | Não | Criptografia S3 |
endpoint |
string | Não | Endpoint customizado |
retention |
string | Não | Política de retenção |
Storage Classes
| Classe | Uso |
|---|---|
STANDARD |
Acesso frequente |
STANDARD_IA |
Acesso infrequente |
ONEZONE_IA |
Zona única, infrequente |
GLACIER |
Arquivamento longo prazo |
GLACIER_IR |
Glacier instant retrieval |
DEEP_ARCHIVE |
Arquivamento muito longo prazo |
Criptografia S3
| Opção | Descrição |
|---|---|
AES256 |
SSE-S3 (gerenciado pela AWS) |
aws:kms |
SSE-KMS (chave KMS) |
Backblaze B2
Backblaze B2 Cloud Storage.
[[storage]]
id = "b2-backup"
driver = "b2"
bucket = "my-backups"
path = "backups/${hostname}/${date}"
key_id = "${secret:b2_key_id}"
application_key = "${secret:b2_app_key}"
lifecycle_days = 30
retention = "daily 7, weekly 4"| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
bucket |
string | Sim | Nome do bucket |
path |
string | Não | Prefixo no bucket |
key_id |
string | Sim | B2 Key ID |
application_key |
string | Sim | B2 Application Key |
lifecycle_days |
int | Não | Dias para lifecycle |
retention |
string | Não | Política de retenção |
Criando Credenciais B2
- Acesse Backblaze B2
- Crie um bucket
- Vá em "App Keys"
- Crie uma nova Application Key
- Copie Key ID e Application Key
MinIO
MinIO e outros serviços S3-compatible.
[[storage]]
id = "minio-backup"
driver = "minio"
endpoint = "https://minio.internal:9000"
bucket = "backups"
path = "daily/${hostname}"
access_key = "${secret:minio_access_key}"
secret_key = "${secret:minio_secret_key}"
use_ssl = true
retention = "daily 7"| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
endpoint |
string | Sim | URL do MinIO |
bucket |
string | Sim | Nome do bucket |
path |
string | Não | Prefixo no bucket |
access_key |
string | Sim | Access Key |
secret_key |
string | Sim | Secret Key |
use_ssl |
bool | Não | Usar HTTPS (padrão: true) |
retention |
string | Não | Política de retenção |
Variáveis em Path
Use variáveis dinâmicas no campo path:
path = "backups/${hostname}/${target}/${database_name}/${year}/${month}/${day}"Ver Variáveis de Template para lista completa.
${database_name}só existe nos drivers que rodam por banco: mysql e postgres comdatabase = "*". Em clickhouse, mongodb e fileset a variável não é preenchida e iria literal para o storage — desde a 0.31.0 otask validaterecusa a task nesse caso, com a dica do path fixo (#14).
Retenção
Configure políticas de retenção por storage:
retention = "daily 7, weekly 4, monthly 6"Ver Políticas de Retenção para detalhes.
Exemplos
Backup Local + S3
[[storage]]
id = "local"
driver = "local"
path = "/backup/quick"
retention = "3"
[[storage]]
id = "s3"
driver = "s3"
bucket = "prod-backups"
region = "us-east-1"
path = "databases/${target}"
access_key = "${secret:aws_access_key}"
secret_key = "${secret:aws_secret_key}"
storage_class = "STANDARD_IA"
retention = "daily 7, weekly 4, monthly 12"S3 + B2 (Redundância)
[[storage]]
id = "s3-primary"
driver = "s3"
bucket = "primary-backups"
region = "us-east-1"
retention = "daily 7, weekly 4"
[[storage]]
id = "b2-secondary"
driver = "b2"
bucket = "secondary-backups"
retention = "daily 7, weekly 4"MinIO Self-hosted
[[storage]]
id = "minio"
driver = "minio"
endpoint = "https://minio.local:9000"
bucket = "backups"
access_key = "${secret:minio_key}"
secret_key = "${secret:minio_secret}"
retention = "daily 30"