Script para fazer backup automatizado de todos os repositórios Git de uma organização no Azure DevOps.
- Python 3.10 ou superior
- Git instalado e no PATH
- Personal Access Token (PAT) do Azure DevOps com permissão:
Code (Read)
curl -LsSf https://astral.sh/uv/install.sh | shuv sync-
Copie o arquivo
.env.examplepara.env:cp .env.example .env
-
Gere um Personal Access Token (PAT) do Azure DevOps:
- Acesse: https://dev.azure.com//_usersSettings/tokens
- Clique em "New Token"
- Configure:
- Name: Backup Script
- Organization:
- Scopes: Code (Read)
- Copie o token gerado
-
Edite o arquivo
.enve preencha:AZURE_PAT=seu_token_aqui_gerado_acima ORGANIZATION=<organization> BACKUP_PATH=./Backup-AzureDevOps/<organization> API_VERSION=7.1
Inicie o ambiente virtual e execute o script:
source .venv/bin/activatebackup-azure-devops --pull-branches| Flag | Descrição |
|---|---|
--pull-branches |
Atualiza branches existentes com git pull |
Backup-AzureDevOps/<organization>/
├── Project1/
│ ├── Repo1/
│ ├── Repo2/
│ └── ...
├── Project2/
│ ├── RepoA/
│ └── ...
└── backup_log_20240101_120000.csv
O arquivo backup_log_*.csv contém:
| Coluna | Descrição |
|---|---|
| Timestamp | Data/hora da execução |
| Project | Nome do project |
| Repository | Nome do repositório |
| Status | CLONED, UPDATED ou ERROR |
| Duration_s | Tempo de execução em segundos |
| LocalPath | Caminho local do backup |
Para rodar o backup diariamente às 2 da manhã:
0 2 * * * cd /path/to/script && uv run backup_azure_devops.py >> /var/log/azure_backup.log 2>&1Nota: Certifique-se que o arquivo
.envestá no mesmo diretório do script
uv run python -m pytest tests/ -v
# Teste Suites
uv run pytest -vuv run python -m pytest tests/ --cov=src/backup_azure_devopsuv run python -m pytest tests/ -m unit -v- Linting:
uv run ruff check src/ - Code formatting:
uv run black src/
- Certifique-se que copiou
.env.examplepara.env - Execute na raiz do projeto:
cp .env.example .env - Verifique se o arquivo
.envestá no mesmo diretório do script
- Verifique se preencheu corretamente a variável
AZURE_PATno arquivo.env - Confirme que o PAT é válido e tem permissão
Code (Read) - Gere um novo token se necessário
- Verifique se o PAT é válido
- Confirme que o PAT tem permissão
Code (Read) - Verifique a conectividade com o Azure DevOps
- Verifique se
ORGANIZATIONestá correto no arquivo.env
- Verifique permissões:
ls -la /backup/path - Use
chmodou execute comsudose necessário - Verifique se o
BACKUP_PATHno.envé válido