Este projeto realiza backups automáticos de diretórios no Windows usando o Restic e armazena os backups em um bucket S3 da AWS. O script é agendado para execução diária, semanal e quinzenal, e inclui funcionalidades para verificação de integridade e remoção de snapshots antigos.
- Backup Diário: Realiza o backup dos diretórios configurados diariamente.
- Verificação Semanal: Verifica a integridade do repositório de backups toda semana.
- Purge Quinzenal: Remove snapshots antigos a cada 15 dias, de acordo com a política de retenção.
- Notificações: Envia notificações via ntfy.sh sobre o status das operações.
- Backup de Configuração: Faz backup do arquivo de configuração (
config.yaml
) em um diretório especificado.
- Python 3.x: O script foi desenvolvido em Python.
- Restic: O executável do Restic deve estar instalado e configurado.
- Conta AWS: Com permissões para acessar o S3 e o AWS Systems Manager Parameter Store.
- AWS Cli: Instalado e configurado
- ntfy.sh: Para receber notificações (opcional).
- Powershell 7: O script de instalação foi desenvolvido baseado na versão 7 do powershell
Antes de qualquer passo, certifique-se de que tenha realizado os seguintes passos:
- Crie um repositório no AWS S3: Passos neste documento.
- Lembre-se se salvar a senha criada para que seja adicionada ao parâmetro
restic_password
do Parameter Store.
- Lembre-se se salvar a senha criada para que seja adicionada ao parâmetro
- Tenha criado os parâmetros do AWS Parameter Store conforme descrito na sessão 3. AWS Parameter Store.
- Tenha o AWS Cli configurado em seu dispositivo
Para instalar, siga os passos:
-
Clone o repositório ou baixe os arquivos do projeto.
-
Edite o arquivo config.yaml de acordo com sua preferência.
-
Crie um ambiente virtual Python e instale as dependências:
python -m venv venv venv\Scripts\activate pip install -r requirements.txt
-
Execute o script de instalação para configurar as tarefas agendadas:
.\install.ps1
Edite o arquivo config.yaml
para definir as configurações do projeto:
restic:
path: "C:\\restic\\restic.exe" # Caminho para o executável do Restic
s3_bucket_url: "s3.amazonaws.com/s3-bucket" # URL do bucket S3
backup:
sources:
- "C:\\Users\\username\\Documents" # Diretórios para backup
- "C:\\Users\\username\\Books\\myBook.pdf" # Para backup de arquivo único
log_dir: "C:\\Users\\username\\Temp\\logs\\restic_s3\\" # Diretório de logs
purge:
keep_daily: 7 # Número de snapshots diários a manter
keep_weekly: 4 # Número de snapshots semanais a manter
keep_monthly: 12 # Número de snapshots mensais a manter
ntfy:
url: "https://ntfy.sh" # URL do servidor ntfy
topic: "my_ntfy_topic" # Tópico do ntfy para notificações
aws_parameter_store:
restic_password: "restic_password" # Nome do parâmetro da senha do Restic
s3_credentials: "restic_s3_credentials" # Nome do parâmetro das credenciais S3
config_backup:
dir: "C:\\Users\\username\\backup_win_s3\\config_backups" # Diretório para backup do config.yaml
Certifique-se de que os seguintes parâmetros estão configurados no AWS Systems Manager Parameter Store:
restic_password: Senha do repositório Restic.
restic_s3_credentials: Credenciais da AWS no formato AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY
.
Uma vez instalado, o script pode ser executado manualmente com os seguintes comandos:
Primeiramente, ative o ambiente com:
C:\Users\username\backup_win_s3\venv\Scripts\Activate.ps1
Em seguida:
- backup: Realiza o backup dos diretórios configurados
& C:\Users\username\backup_win_s3\venv\Scripts\python.exe C:\Users\username\backup_win_s3\backup_restic.py backup
- Check: Verifica a integridade do repositório.
& C:\Users\username\backup_win_s3\venv\Scripts\python.exe C:\Users\username\backup_win_s3\backup_restic.py check
- Purge: Remove snapshots antigos de acordo com a política de retenção.
& C:\Users\username\backup_win_s3\venv\Scripts\python.exe C:\Users\username\backup_win_s3\backup_restic.py purge
- Backup Config: Faz backup do arquivo de configuração (config.yaml).
& C:\Users\username\backup_win_s3\venv\Scripts\python.exe C:\Users\username\backup_win_s3\backup_restic.py backup_config
O script de instalação (install.ps1) configura as seguintes tarefas agendadas:
- Backup Diário: Executa o backup diariamente no horário especificado.
- Verificação Semanal: Verifica a integridade do repositório toda segunda-feira às 2:00 AM.
- Purge Quinzenal: Remove snapshots antigos a cada 15 dias, alternando entre segundas e quintas-feiras às 3:00 AM.
O script envia notificações via ntfy.sh sobre o status das operações. Certifique-se de configurar o tópico no arquivo config.yaml
.
Os logs das operações são salvos no diretório especificado em config.yaml (campo log_dir). Cada tipo de operação (backup, check, purge) tem seu próprio arquivo de log:
- backup.log
- check.log
- purge.log
Se você quiser contribuir para este projeto, siga estas etapas:
- Faça um fork do repositório.
- Crie uma branch para sua feature (git checkout -b feature/nova-feature).
- Commit suas mudanças (git commit -m 'Adicionando nova feature').
- Faça push para a branch (git push origin feature/nova-feature).
- Abra um pull request.
Este projeto está licenciado sob a MIT License.
1.0.0