#365Posts – Sincronizando o Firefox com o Dropbox a sério no OS X

Uma das maiores vantagens do Mac OS X (e também do iOS, mas este não vem ao caso agora) é ser um sistema UNIX completo. Todo o conhecimento que alguém tenha numa plataforma UNIX pode ser facilmente utilizado no OS X, na maior parte das vezes sem nenhuma alteração ou adaptação.

A maioria de nós, usuários do Mac OS X, nunca nos damos conta disso, porque preferimos usar a interface gráfica para tudo, e porque raramente temos a necessidade de fazer usos mais avançados do computador, como automação de tarefas (que é o foco que vamos tratar aqui).

Como trabalho com vários computadores (no mínimo o iMac de casa e o MacBook quando estou viajando) tenho a necessidade de manter as máquinas o mais parecidas possíveis, de forma a não precisar ficar reinventando a roda a cada vez, principalmente porque a gente só se dá conta da falta das pequenas coisas quando precisa e não tem.

A solução que encontrei foi manter o Dropbox atualizado com tudo que preciso em qualquer lugar, para em caso de aperto poder facilmente buscar minhas ferramentas do repositório único.

O que é o Dropbox

Em resumo, o Dropbox é um serviço de armazenamento “na nuvem”, o que antigamente também era conhecido como “disco virtual”. Com ele, a pessoa pode manter seus arquivos mais importantes sempre acessíveis, além de com programas específicos poder compartilhar um diretório especial do computador automaticamente com a “nuvem”.

Há planos gratuitos e planos pagos na Dropbox, sendo que quando alguém se inscreve através de sua URL de indicação (como você, se clicar no link Dropbox e se inscrever) você ganha algum espaço gratuito extra para o resto da vida.

Para deixar arquivos sincronizados entre todos os computadores que você usa basta configurar a sua conta Dropbox e baixar o programa específico para a plataforma de cada máquina. Automaticamente, conquanto haja conexão à Internet, as máquinas ficarão o tempo todo sincronizando a si mesmas com a “nuvem” do Dropbox, facilitando sua vida de um jeito que só depois de usar você vai saber.

Minha necessidade de sincronizar arquivos

Basicamente, eu preciso manter o Firefox do iMac sincronizado com o do Macbook o tempo todo, porque é o navegador que uso para trabalhar (uso o Chrome para navegar e ver tumblrs edificantes), e já o tenho todo personalizado com as ferramentas que fazem minha vida mais feliz.

No Mac OS X, é fácil de manter tudo sincronizado. Basta saber onde estão os arquivos do Firefox e mandá-los para um diretório qualquer no Dropbox. Na outra máquina, depois de sincronizado o Dropbox com o computador, é só fazer o caminho inverso, e pronto. A operação de enviar os arquivos para o Dropbox pode ser feita com o Firefox funcionando; já a restauração deve ser feita com o programa fechado, ou não será possível sobrescrever os arquivos em uso pelo sistema operacional.

Enviando arquivos para o Dropbox

No Mac OS X os arquivos do Firefox ficam gravados em:

~/Library/Application\ Support/Firefox/

Observe que estamos usando a notação do UNIX para indicar o caminho correto dos arquivos, com um “til” indicando o diretório “home” do usuário, e o espaço devidamente “escapado” por uma barra invertida.

Para prosseguir com a explicação vamos convencionar que o programa do Dropbox tenha sido instalado com as configurações padrão, e que o diretório compartilhado com a nuvem seja ~/Dropbox (ou seja, Dropbox dentro do seu diretório home).

A maneira mais simples que conheço de manter sincronizados os arquivos de dois locais diferentes em ambiente UNIX é usar o rsync (não é o objetivo agora entrar em detalhes sobre ele, mas a web está cheia de informação). Para não ter que ficar digitando a mesma sequência de comandos toda vez que eu quisesse sincronizar o Firefox com a nuvem, escrevi um pequeno script para facilitar. Abra seu editor de código favorito e crie um arquivo chamado firefox-dropbox.sh e salve-o no seu diretório home, contendo o seguinte:

#!/bin/bash

say put a keep are you
rsync -vaPtrz --delete ~/Library/Application\ Support/Firefox/ ~/Dropbox/Firefox/

Depois disso, usando o terminal, dê permissão de execução no script:

chmod +x ~/firefox-dropbox.sh

Pronto, agora já temos um script pronto para sincronizar nosso firefox local com o Dropbox, que além de tudo ainda fala com você avisando quando for começar a transferir os arquivos.

Sempre que quiser mandar os arquivos do Firefox do computador para a Dropbox basta executar o script com:

~/firefox-dropbox.sh

Trazendo arquivos do Dropbox para o computador

O processo de trazer arquivos do Dropbox para o computador é muito simples, basta rodar o rsync com os caminhos de origem e destino invertidos, em relação ao envio para a nuvem:

rsync -vaPtrz --delete ~/Dropbox/Firefox/ ~/Library/Application\ Support/Firefox/

Automatizando o envio para o Dropbox

Agora vem a parte mais divertida e sofisticada do tutorial: vamos fazer com que o envio dos arquivos do Firefox para o Dropbox ocorra de maneira automática, de meia em meia hora, sem a obrigação de digitar comandos manualmente.

A mágica será obtida usando o serviço Launchd do OS X, que semelhante à Cron de outras plataformas permite rodar processos de maneira controlada automaticamente. Semelhante, mas não igual, pois o Launchd é muito mais sofisticado que a Cron, permitindo inclusive a criação de serviços apenas usando uma linguagem relativamente fácil de compreender, em XML.

Existem, basicamente, quatro locais que podem conter arquivos .plist que descrevem uma tarefa automática na Launchd, mas para evitar a criação de complicadores vamos especificar apenas o que interessa para este exemplo.

Também, para poder prosseguir com a tarefa será necessário saber o seu nome de usuário no UNIX. Caso você não tenha essa informação, execute o seguinte comando no Terminal (ele vai mostrar na tela, exatamente, o seu nome de usuário, que você deverá memorizar ou tomar nota).

echo $USER

Nos exemplos seguintes quando você encontrar SEUUSERNAME em algum código, deverá substituir esta palavra pelo nome de usuário (que acabou de descobrir com o comando acima).

Volte ao seu editor de códigos favorito e crie um arquivo com o nome org.janio.Firefox-Dropbox-Sync que deve ser salvo em ~/Library/LaunchAgents (ou seja, um diretório chamado LaunchAgents existente dentro do seu “home”). O conteúdo do arquivo deve ser o seguinte.

<?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>Debug</key>
        <false/>
        <key>Label</key>
        <string>org.sarmento.janio.Firefox-Dropbox-Sync</string>
        <key>ProgramArguments</key>
        <array>
                <string>/Users/SEUUSERNAME/firefox-dropbox.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>1800</integer>
</dict>
</plist>

Pronto! Agora, a cada 30min (1800s) seu computador vai falar uma frase que expressa surpresa e sincronizar automaticamente os arquivos do seu Firefox para o Dropbox.

Para o infinito e além

Minha intenção com este tutorial enorme era mostrar como se pode automatizar uma tarefa repetitiva no OS X. Pode ser que esta demanda só faça sentido para mim, mas a ideia é passar a técnica, e não uma receita pronta. Tenho certeza de que as pessoas têm muita coisa que gostariam de automatizar, inclusive, por que não dizer, backups de seus sites, estejam eles hospedados onde for.

Você pode obter mais informações sobre automação de tarefas no Pai dos Burros.

Atualização

Alguém argumentou que seria mais simples criar um link simbólico dentro do Dropbox apontando para o diretório do perfil do Firefox. É verdade, porém:

  1. Se você fizer isso, não vai demorar muito a começar a ter problemas de permissão que impedem o Dropbox de sincronizar com o seu computador.
  2. O objetivo deste post é ensinar a automação de tarefas no OS X, e não discutir qual a melhor maneira de sincronizar isso ou aquilo.

Newsletter

Gostou deste conteúdo? Informe seu email e receba gratuitamente todos os novos posts na sua caixa de entrada (será necessário confirmar a inscrição em seguida, verifique sua caixa postal).

Deixe seu comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.