Backup de Arquivos
Este guia mostra como configurar backup de arquivos e diretórios.
Backup Rápido
Para backup pontual sem configuração:
backupally quick /var/www/html -d /backups/ -zCom upload para S3:
backupally quick /var/www/html -d s3://bucket/backups/ -t s3 \
--access-key AKIAIO... \
--secret-key wJalrX... \
--bucket my-bucket \
-zCriar Task de Backup
Website
Crie /etc/backupally/tasks.d/website.toml:
[task]
id = "website"
name = "Website Files"
enabled = true
schedule = "0 4 * * *"
[target]
kind = "fileset"
includes = ["/var/www/html"]
excludes = [
"**/.git",
"**/node_modules",
"**/*.log",
"**/cache/*",
"**/tmp/*"
]
[packer]
compressor = "zstd"
compression_level = 6
[[storage]]
id = "local"
driver = "local"
path = "/backup/website"
retention = "daily 7, weekly 4"Configurações do Sistema
[task]
id = "system-config"
name = "System Configuration"
enabled = true
schedule = "0 5 * * *"
[target]
kind = "fileset"
includes = [
"/etc/nginx",
"/etc/systemd",
"/etc/cron.d",
"/etc/backupally"
]
[packer]
compressor = "zstd"
[[storage]]
driver = "s3"
bucket = "system-backups"
path = "config/${hostname}/${date}"
retention = "daily 30, monthly 12"Home de Usuário
[task]
id = "home-backup"
name = "User Home Directory"
enabled = true
schedule = "0 2 * * *"
[target]
kind = "fileset"
includes = ["/home/usuario"]
excludes = [
"**/.cache",
"**/Downloads",
"**/Trash",
"**/.local/share/Trash"
]
[[storage]]
driver = "b2"
bucket = "personal-backups"
retention = "daily 7, weekly 4, monthly 6"Padrões de Exclusão
Sintaxe Glob
| Padrão | Significado |
|---|---|
* |
Qualquer sequência exceto / |
** |
Qualquer sequência incluindo / |
? |
Qualquer caractere único |
[abc] |
Qualquer caractere do conjunto |
Exemplos Comuns
excludes = [
# Controle de versão
"**/.git",
"**/.svn",
"**/.hg",
# Node.js
"**/node_modules",
"**/package-lock.json",
# Python
"**/__pycache__",
"**/*.pyc",
"**/venv",
"**/.venv",
# Build
"**/dist",
"**/build",
"**/target",
# Logs e temporários
"**/*.log",
"**/logs",
"**/tmp",
"**/temp",
"**/cache",
# IDE
"**/.idea",
"**/.vscode",
# Sistema
"**/Thumbs.db",
"**/.DS_Store"
]Symlinks, Filesystems e Metadados
O que o backup de arquivos faz, sem opção para mudar:
| Situação | Comportamento |
|---|---|
| Symlink | Guardado como link (alvo não é seguido). Volta como link no restore |
| Diretório vazio | Guardado e restaurado |
| Permissão, dono e mtime | Preservados |
| Outro filesystem dentro do include | Atravessado — use excludes para /proc, /sys, /dev, /run, /mnt/* se o include for amplo |
| Socket, FIFO, device | Ignorados |
| Include inexistente | Erro — o backup não roda com menos do que a task declarou |
[target]
kind = "fileset"
includes = ["/"]
excludes = ["/proc/**", "/sys/**", "/dev/**", "/run/**", "/tmp/**", "/mnt/**"]As chaves
follow_symlinkseone_filesystem, que apareciam em versões anteriores desta página, não existem: são ignoradas se declaradas.
Validar e Executar
backupally task validate website
backupally backup --target websiteRestaurar Backup
Listar Snapshots
backupally history --target websiteRestaurar
backupally restore \
--target website \
--snapshot /backups/website/website_20260904_040000.tar.ally \
--path /restore/websiteO backup guarda a árvore real, com o caminho relativo à raiz. Um include
/var/www/html volta em /restore/website/var/www/html/... — symlinks,
diretórios vazios, permissões e mtime preservados.
Restaurar para Local Original
Como o caminho dentro do backup já é o caminho absoluto sem a barra inicial,
restaurar no lugar é apontar --path para a raiz:
backupally restore \
--target website \
--snapshot /backups/website/website_20260904_040000.tar.ally \
--path /Apontar
--path /var/www/htmlnão restaura no lugar: produz/var/www/html/var/www/html/.... Para trocar só alguns arquivos, restaure em um diretório temporário e copie o que precisar.
Backups de fileset feitos antes da 0.28.0 não restauram como arquivos: o formato antigo guardava blocos sem caminho nem ordem. Refaça o backup.
Tamanho e Frequência
Cada run é um backup completo — não há incremental. Para reduzir o custo:
- Exclua o que não precisa voltar (
node_modules, caches, logs) - Deixe a retenção apagar runs antigos
- Meça com
backupally measureantes de mudar a frequência
Ver Como o Backup é Armazenado.
Condições de Execução
Verificar Carga do Sistema
[condition]
when = "loadavg() < 2.0"Verificar Espaço em Disco
[condition]
when = "diskfree('/backup') > 50GB"Janela de Execução
[window]
start = "00:00"
end = "06:00"Monitoramento
[notification]
enabled = true
[notification.webhook]
url = "https://hooks.slack.com/services/xxx"Troubleshooting
Permissão Negada
Execute como root ou ajuste permissões:
sudo backupally backup --target websiteArquivos Muito Grandes
Aumente o timeout:
[network]
timeout_seconds = 1800Muitos Arquivos Pequenos
Use pack maior:
[packer]
pack_size_mb = 200