Dev (Back & Front)ARTIGO

Automatizando Backups do Obsidian no macOS usando Git e Launchd

Automatizando Backups do Obsidian no macOS usando Git e Launchd
Imagem: Paulemberg Silva

O Obsidian é uma ferramenta poderosa para gerenciamento de notas, e manter um backup automatizado é essencial para a segurança dos seus dados. Neste post, vou mostrar como configurar um backup automático do seu vault do Obsidian usando Git no macOS, com execução programada duas vezes ao dia.

Pré-requisitos

  • macOS
  • Git instalado
  • Repositório Git configurado (GitHub, GitLab, etc.)
  • Conhecimento básico de terminal
  • Obsidian instalado com um vault configurado

1. Criando o Script de Backup

Primeiro, vamos criar um script que realizará o backup. Crie um arquivo chamado cronObsidian.sh no diretório de sua preferência aqui vou utilizar o seguinte ~/git:

html
#!/bin/zsh
echo "Atualizando repositório Obsidian..."
d=$(date +'%a %b %e %H:%M:%S %Z %Y')
msg="UpdateAt: ""$d"
cd ~/git/obsidianVault
git add .
git commit -m "$msg"
git push origin main

Depois, torne o script executável:

shell
chmod +x ~/git/cronObsidian.sh

2. Configurando o Git

Para que o script funcione corretamente, configure seu nome de usuário e email no Git:

shell
git config --global user.name "Seu Nome"
git config --global user.email "seu.email@exemplo.com"

3. Configurando a Tarefa Agendada com Launchd

No macOS, usamos o launchd em vez do cron tradicional. Crie um arquivo plist em ~/Library/LaunchAgents/com.user.cronobsidian.plist:

html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "<http://www.apple.com/DTDs/PropertyList-1.0.dtd>">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.user.cronobsidian</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/SeuUsuario/git/cronObsidian.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <array>
      <dict>
        <key>Hour</key>
        <integer>12</integer>
        <key>Minute</key>
        <integer>0</integer>
      </dict>
      <dict>
        <key>Hour</key>
        <integer>18</integer>
        <key>Minute</key>
        <integer>0</integer>
      </dict>
    </array>
    <key>StandardOutPath</key>
    <string>/Users/SeuUsuario/Library/Logs/cronobsidian.log</string>
    <key>StandardErrorPath</key>
    <string>/Users/SeuUsuario/Library/Logs/cronobsidian.error.log</string>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

4. Ativando a Tarefa Agendada

Carregue a tarefa no launchd:

shell
launchctl load ~/Library/LaunchAgents/com.user.cronobsidian.plist

Verifique se está funcionando:

shell
launchctl list | grep cronobsidian

5. Verificando o Funcionamento

O script agora executará automaticamente:

  • Às 12:00 (meio-dia)
  • Às 18:00 (6 da tarde)

Os logs serão gravados em:

  • ~/Library/Logs/cronobsidian.log (saída padrão)
  • ~/Library/Logs/cronobsidian.error.log (erros)

Dicas de Solução de Problemas

  1. Verifique as permissões do script (deve ser executável)
  1. Confirme se os caminhos no arquivo plist estão corretos
  1. Verifique os arquivos de log para identificar possíveis erros
  1. Certifique-se de que o Git está configurado corretamente

Conclusão

Com essa configuração, seu vault do Obsidian será automaticamente versionado e backup-ado duas vezes ao dia. Isso garante que suas notas estejam sempre seguras e sincronizadas com seu repositório remoto.

Paulemberg SilvaAutor

Sou um profissional com vasta experiência em Engenharia de Software e Desenvolvimento de Aplicações, com sólida formação acadêmica e expertise em diversas tecnologias. Possuo Bacharelado em Sistemas de Informação. Ao longo da minha carreira, atuei em diversas funções de liderança e desenvolvimento, com destaque para minha experiência como Coordenador de Engenharia de Software desde 2023. Tenho ampla vivência em ambientes ágeis (SCRUM), liderança de equipes, com forte habilidade em negociação de prazos e soluções arquiteturais. Minhas competências técnicas incluem, mas não se limitam a, .NET Core, Azure, Docker, Kubernetes, SQL Server, Postgres, C#, Angular, PL/SQL, e desenvolvimento em nuvem, com um foco contínuo na entrega de soluções eficientes e de alta qualidade. Com um perfil voltado para a inovação e melhoria contínua, sou responsável pela coordenação de equipes, treinamento de profissionais juniores e por garantir que os projetos atendam às necessidades dos clientes. Ao longo da minha carreira, sempre busquei alinhar as tecnologias e processos de desenvolvimento às necessidades de negócios, com foco na excelência e na entrega de valor.

Ver perfil