Contexto
O RCSS nasceu da necessidade de automatizar backups de múltiplos projetos em servidores Linux, eliminando processos manuais de upload e limpeza de arquivos antigos.
Os scripts são construídos sobre o rclone — ferramenta open source de sincronização com dezenas de provedores cloud — e oferecem uma camada simples de configuração via arquivo .env.
Scripts
| Script | Descrição |
|---|
uploadBackup.sh | Faz upload de todas as pastas de projeto em BACKUP_ROOT para o cloud |
cleanRemoteBackups.sh | Remove backups antigos do cloud com base na retenção configurada |
restoreBackup.sh | Download interativo de um backup específico do cloud |
backup.env | Arquivo de configuração compartilhado |
Configuração (backup.env)
Obrigatórias
| Variável | Descrição |
|---|
BACKUP_ROOT | Diretório local contendo as pastas de projeto (ex: /opt/backups) |
RCLONE_REMOTE | Nome do remote configurado no rclone (ex: douglas:) |
Retenção
| Variável | Default | Descrição |
|---|
RETENTION_DAYS | 1 | Dias para manter backups locais |
REMOTE_RETENTION_DAYS | 15 | Dias para manter backups no cloud |
REMOTE_CLEANUP_SAFETY_DAYS | 2 | Margem de segurança antes da limpeza remota |
DELETE_AFTER_UPLOAD | false | Deletar local imediatamente após upload |
Upload
| Variável | Default | Descrição |
|---|
DRIVE_DESTINATION | Backups | Pasta de destino no remote do cloud |
IGNORED_FOLDERS | scripts config bin logs lost+found | Pastas ignoradas durante o upload |
SKIP_DOTFILES | false | Ignora dotfiles por padrão |
Flags do uploadBackup.sh
| Flag | Descrição |
|---|
-p | Barra de progresso |
-v | Output verboso |
-D | Ativa DELETE_AFTER_UPLOAD |
-s | Ignora dotfiles (.env, .git/, etc.) |
-o <path> | Sobrescreve BACKUP_ROOT |
-r <remote> | Sobrescreve RCLONE_REMOTE |
-d <folder> | Sobrescreve pasta de destino no cloud |
-i <folders> | Adiciona pastas extras à lista de ignoradas |
-a <file> | Upload de arquivo único |
Exemplos de uso
# Upload com barra de progresso
./uploadBackup.sh -p
# Deletar local após upload
./uploadBackup.sh -D
# Upload de arquivo específico
./uploadBackup.sh -a /opt/RCSS/sync.log -d Logs
# Restaurar backup interativamente
./restoreBackup.sh -p -v
# Limpeza do cloud (dry-run)
./cleanRemoteBackups.sh -d -v
# Upload diário às 03:00
0 3 * * * /opt/backup/uploadBackup.sh >> /opt/backup/sync.log 2>&1
# Limpeza do Drive todo domingo às 05:00
0 5 * * 0 /opt/backup/cleanRemoteBackups.sh >> /opt/backup/sync.log 2>&1
Stack
| Camada | Tecnologia |
|---|
| Linguagem | Bash (Shell Script) |
| Sincronização | Rclone |
| Cloud | Google Drive (compatível com qualquer provider do rclone) |
| Agendamento | Cron |