Backups Automáticos com Automator, rsync e iCal
Por Eduardo Silva para o Pplware
Tal como já apresentado em artigos anteriores, onde mostrámos como o Automator pode ser um mundo de possibilidades dentro do OS X, ou como podemos usar o Automator para Renomear ficheiros, ou ainda como podemos definir períodos de concentração com o Automator e iCal, o Automator é uma ferramenta que permite a automatização de inúmeros processos no Mac OS. Estas automatizações são particularmente interessantes no contexto de processos recorrentes.
Um desses processos é o de fazer backup de diferentes dados. É o que vos propomos hoje, Backups Automáticos com Automator, rsync e iCal.
Hoje em dia o processo de backup mais tradicional (onde guardamos cópias dos nossos dados num disco externo ou um servidor próprio) começa a ser questionado por muitos, dada a crescente adopção de soluções que usam a "Cloud" (e.g.: o Dropbox, Google Drive, Microsoft SkyDrive, etc.). Pessoalmente uso várias dessas soluções, e não irei aqui discutir nem compará-las com as formas "mais tradicionais" de fazer backups. Acho que é ainda uma prática bastante comum fazer backups num disco externo ou num servidor próprio, principalmente quando queremos fazer backups de fotografias, filmes, ou dados mais sensíveis que não queremos guardar na Cloud.
O Mac OS tem uma ferramenta integrada de backup: o Time Machine. Este é sem dúvida uma ferramenta muito interessante, no entanto nem todas as pessoas usam esta ferramenta. Neste artigo irei apresentar uma forma alternativa de fazer backups no Mac OS usando o Automator e outras duas aplicações:
- iCal: para definir os momentos em que os backups devem de ser feitos
- rsync: para copiar/sincronizar os ficheiros a fazer backup
No exemplo seguinte iremos assumir que o backup é feito num disco externo, no entanto o rsync permite da mesma forma fazer backup para um servidor.
Criar o workflow no Automator
Criar Workflow como "iCal Alarm"
1 - abrir o Automator e seleccionar “iCal Alarm".
2 - adicionar uma mensagem de confirmação (opcional, eu prefiro ter esta opção para confirmar o backup, mas podem optar por fazer sempre o backup sem pedir confirmação).
Isto consegue-se usando o bloco “Ask Confirmation” do Automator.
3 - adicionar um bloco “Run Shell Scrip”, no qual colocaremos o seguinte “comando”:
rsync -aE --ignore-existing /Users/silva/photos-videos/ "/Volumes/BackupDisk/photos-videos/"
- Este comando irá “sincronizar uni-direccionalmente" da directoria local (/Users/silva/photos-videos/) para o BackupDisk (/Volumes/BackupDisk/photos-videos). Estas opções irão: copiar se não existir, actualizar se houver mudanças, e nunca apagar no destino (BackupDisk) se tiver sido apagado na origem.
- O rsync supporta outras opções de uso, no entanto aconselha-se uma leitura cuidadosa do manual e outros exemplos para evitar perda de dados.
Adicionar uma segunda mensagem de “aviso” para notificar que o processo de backup foi terminado com sucesso.
4 - Guardar o workflow como: “backup-videos-fotos”
- isto faz com que se gere um novo evento no iCal chamado “backup-video-fotos”
- podemos programar este evento para todas as sextas-feiras às 20:00
Se tudo correr bem, deveremos receber este diálogo todas as sextas-feiras as 20:00.
5 - Criar uma nova aplicação para fazer o backup definido explicitamente a qualquer momento:
- O automator gera uma “app” por cada um destes ical workflows. Estes são colocados na diretoria: "~/Library/Workflows/Applications/iCal/“ (que normalmente não é visível no Finder, mas que podemos tornar visível executando o seguinte comando no terminal: "chflags nohidden ~/Library/").
- Podemos copiar essa app para qualquer lugar, e executá-la quando desejamos fazer um backup - mesmo que ainda não é sexta-feira :).
Notas finais
Neste artigo foi apresentada uma nova forma de usar o Automator, que em conjunto com o iCal e rsync permitem criar uma forma de automatizar o nosso processo de criar backups. No exemplo dado criámos um workflow para fazer backups de fotos e vídeos, poderão ser criados outros para outros dados, ou mesmo fazer o backup de todos os dados num só workflow.
Este tipo de técnica pode igualmente ser criada noutros OSs, por exemplo no Linux usando o crontab que corre o comando rsync a um determinado momento. Uma vez mais espero que vejam utilidade nesta aplicação do Automator, eu acho muito interessante poder “sistematizar” este processo de backup, para evitar que me esqueça de fazer backups regularmente. Até a próximo artigo!
Este artigo tem mais de um ano
Posso fazer este mesmo backup para a pasta do dropbox?
Olá,
Podes sim! Apenas tens de ajustar o comando “rsync”, para algo do estilo:
rsync -aE –ignore-existing /Users/silva/photos-videos/ “/Users/silva/Dropbox/photos-videos/” (onde “/Users/silva/Dropbox/photos-videos/” é uma directoria no teu Dropbox).
Pode ser uma forma interessante de fazeres backups para o Dropbox (uma vez por dia ou algo do estilo)… Para algumas coisas pode ser uma óptima ideia (para não teres o dropbox a sincronizar constantemente coisas que não precisam de ser “sincronizadas ao segundo”).
Cumprimentos!
Existe alguma forma de usar o Automator ou rsync para fazer backup automático dos calendários do iCal no formato ics para uma pasta à escolha?
Olá,
Eu nunca fiz esse tipo de backup (automaticamente)… normalmente uso Google Calendar para sincronizar calendários. No entanto, e depois de fazer uma rápida pesquisa, vejo que há muita gente a tentar fazer isso para calendários locais, e normalmente a solução mais popular (muito instável e dependente da versão do Mac OS) parece ser usar um “AppleScript” que basicamente “mímica” os passos que efectuamos para “exportar” calendários do iCal como .ics (literalmente: abrir iCal > File > Export …) – por exemplo: http://forums.macrumors.com/showthread.php?t=1560524
Outra aparente solução para backup de calendários, é fazer um backup de todos os dados do iCal sem ser como ics. Para isso teríamos de copiar várias directorias (nas quais são guardadas os dados do iCal). Este post discute isso: https://discussions.apple.com/message/8213947#8213947 Nesta solução poderias criar um workflow no automator (como o que eu apresentei no artigo), onde copias as diferentes directorias para um disco de backup. No entanto, nesse caso o comando “rsync” deverá garantir que os conteúdos no destino são sempre uma cópia dos dados do iCal, de forma a que o backup este sempre actualizado… no meu exemplo isso era diferente.
Eu não sei se usaria alguma destas soluções… parecem demasiado “instáveis” e possivelmente poderão dar alguns problemas. No entanto parecem ser as duas soluções mais populares…
Obrigado pela resposta.
É possível sincronizar os eventos que já se encontram no iCal com o Google Calendar?
Já os tentei importar no Google por ics mas não importam corretamente, isto é, as notas não aparecem ou alguns detalhes de eventos, como nome, localização e até horas, aparecem versões antigas que já foram modificadas.