Ferramentas
Borg como solução de backup.
Launchd para criação de backups periódicos
Passos
- Criar um repositório do Borg: Será armazenado nesse diretório todos os backups feitos e seus snapshots incrementais.
borg init -e=repokey ~/home-backup
- (opcional) Exclusão / Inclusão de arquivos no backup: Pode-se criar um arquivo para incluir ou excluir arquivos ou diretórios do backup.
- Crie um Arquivo para exclusão / inclusão
- Comando para criar os backups:
borg create --progress --stats --patterns-from ~/borg-backup-home.lst ~/home-backup::'{now}'
- Listando os backups:
borg list ~/home-backup
- Compactando os backups: Rode o seguinte comando para compactar os backups eliminando segmentos não utilizados.
borg compact /Users/my-user/home-backup
- Prune os backups: Para limpeza dos backups antigos ou repetidos, pode-se usar o comando
prune
:borg prune --keep-within=2d --keep-daily=7 --keep-weekly=8 --keep-monthly=12 --keep-yearly=3 ~/home-backup
- A explicação desse comando pode ser vista em Explicação do comando prune
- (opcional) Sync do backup para um bucket: Para enviar para a nuvem, pode usar um serviço do tipo “Google Drive” / “Dropbox” ou subir em um bucket. Exemplo:
gsutil rsync -d ~/home-backup gs://my-bucket
- Automatizar backup e sync: No OsX (Mac), pode-se usar o Launchd para realizar o backup periodicamente. Para isso
- Crie um Shell para backup
- Crie um Arquivo launchd para macosx
Outros
Shell para backup
Pode-se guarda-lo em ~/borg-home-backup.sh
Arquivo launchd para macosx
Crie o arquivo abaixo que periodicamente o shell ~/borg-home-backup.sh
Este serviço é programado para iniciar em quatro momentos diferentes no decorrer do dia, especificamente às 10:00, 13:00, 18:00 e 20:00.
Além disso, qualquer saída padrão ou erro gerado pelo serviço será redirecionado para dois arquivos diferentes localizados no diretório “/tmp”, nomeados como “com.alisson.borg.out” e “com.alisson.borg.err”, respectivamente.
Pode-se guarda-lo em ~/Library/LaunchAgents/com.alisson.borg.plist
Arquivo para exclusão / inclusão
Pode-se guarda-lo em ~/borg-backup-home.lst
R /Users/my-user/
# Any inside dir...
- **/cache
- **/cache-chat
- **/.git
- **/node_modules
# Emacs temp
- **/*~
- **/\#*
# borg backup script (it has passphrase)
- /Users/my-user/borg-home-backup.sh
# Dirs from home
- /Users/my-user/.docker
- /Users/my-user/.pyenv
- /Users/my-user/.nuget
- /Users/my-user/.nvm
- /Users/my-user/.npm
- /Users/my-user/.vscode
- /Users/my-user/.local
- /Users/my-user/Applications
- /Users/my-user/javasharedresources
- /Users/my-user/nltk_data
- /Users/my-user/google-cloud-sdk
- /Users/my-user/go
- /Users/my-user/confluent
- /Users/my-user/home-backup # backup itself
- /Users/my-user/Library
# Personal workspace temp dir (trash things...)
- /Users/my-user/wo/personal/temp
# dirs with data from kafka (messages in files)
- **/kafka-consumer/data-*
Explicação do comando prune
Exemplo: borg prune --keep-within=2d --keep-daily=7 --keep-weekly=8 --keep-monthly=12 --keep-yearly=3 ~/home-backup
Explicação:
Este comando é usado para podar (ou seja, excluir) backups antigos.
Aqui está o que cada opção faz:
--keep-within=2d
: Mantém todos os backups feitos dentro dos últimos 2 dias (48h).
--keep-daily=7
: Mantém um backup diário pelos últimos 7 dias.
--keep-weekly=8
: Mantém um backup semanal pelas últimas 8 semanas.
--keep-monthly=12
: Mantém um backup mensal pelos últimos 12 meses.
--keep-yearly=3
: Mantém um backup anual pelos últimos 3 anos.
O último argumento ~/home-backup
é o diretório que contém os backups.
Portanto, este comando irá excluir todos os backups que não se enquadrem nessas regras.