Backup é uma coisa mais complicada do que deveria, eu acho… Não é complicado ter um backup, mas achar o balanço certo de freqüência, complexidade, número de cópias, custo e facilidade de restauração é menos intuitivo do que deveria, principalmente quando falamos de backup pessoal. Pelo menos para mim.

Depois de uns bons anos sempre sentindo que minha estratégia era insuficiente acho que finalmente cheguei num bom equilíbrio. Ainda passa longe de ser simples, mas acho que pelo menos em custo, freqüência, número de cópias e facilidade de restauração eu estou coberto.

O problema

Se você tem um set up parecido com o meu os seus dados estão espalhados em trocentos lugares: Disco local no seu PC, Google Drive/Photos, Dropbox, servidor local – no meu caso um raspberry pi, servidor remoto – eu uso o dreamhost – e talvez até outros.

O tipos de dados que precisam de backups também são diferentes: Fotos, músicas, documentos, código, configurações, senhas, banco de dados e etc precisam de estratégias diferentes, ocupam uma quantidade de espaço diferente e têm importância diferente.

A solução

Começando de fora pra dentro:

Dropbox

A grande vantagem do Dropbox é que ele sincroniza em múltiplos devices, então automaticamente tenho pelo menos duas cópias: Nos servidores do Dropbox e no meu PC.  Os dois problemas que posso ver são: 1) Eu apagar um arquivo por acidente ou 2) alguém hackear a minha conta e deletar meus arquivos.

Os tipos de dados que tenho lá posso considerar razoavelmente críticos (pra mim) e que eu preciso de acesso constante – Yay Android!

Pra tentar resolver isso eu tenho um script que roda a cada meia hora que faz rsync incremental do diretório do Dropbox para um outro diretório local. Esse diretório local entra no balaio de gato descrito mais pra baixo.

Google Drive

Os dados que tenho lá são críticos (90% dos meus documentos), mas não preciso de acesso imediato. Posso ficar algum tempo sem acesso.

Não faço backup desse. Acreditem em mim. Não precisa.

Dreamhost

Aqui estão hospedados meus blogs e de diversos amigos. Uso o Dreamhost faz muito tempo e nunca tinha tive problema com eles. O envolvimento deles com o sistema de arquivos Ceph também me dá um tanto a mais de confiança.

Não considero nada lá como crítico ou extremamente importante. faço backup duas ou três vezes por ano e oriento meus amigos a fazer backups adicionais eles mesmos se quiserem. No painel de controle deles tem uma opção “full backup” que gera uns 25GB cada vez que eu executo em convenientes .tgz por usuário e por database.

Raspberry Pi

Meu servidor local roda algumas instâncias de wordpress, DHCP, Bind e MySQL. Só faço backup do MySQL e dos WordPress, via um shell script bem simples uma vez por semana. Um .tgz com as instâncias e um .sql para cada banco de dados. Tudo executado remotamente via ssh e copiado para o meu PC e de lá pro backup principal.

Eu considero os dados lá razoavelmente críticos. Abaixo um screenshot:

Meu PC

Como deu pra perceber quase tudo acaba convergindo pro meu PC. E além disso tem muito mais coisa que eu crio ou baixo diretamente nele ou então são dados e documentos de vidas passadas que estão armazenados nele. Tenho arquivos de mais de dez anos por aqui.

Também tenho uma quantidade considerável de fotos tiradas com câmera digital – ao invés do celular – que não vão pro Google Photos automaticamente. Músicas não são muitas, mas tão lá. Declaração de imposto de renda de 2007? Yup… Um bocado de lixo talvez, mas são meus dados. Deixa eles ai.

Pra começar chamar meu computador de PC não é muito correto. É um Dell PowerEdge T110. É um modelo servidor na verdade, o que ajuda. O sistema operacional está num SSD, mas os dados moram num mirror ZFS em dois discos de 1TB – primeiro nível de proteção, criando redundância em 100% dos dados com um sistema de arquivos sensacional.

No ZFS tenho 3 níveis de snapshot configurados: Ciclo de 5 dias, ciclo de 1 mês e ciclo de 1 ano. Segundo nível de proteção contra estupidez, caso apague alguma coisa por acidente ou tenha algum arquivo corrompido (por exemplo no Dropbox). Recomendo usar o zfSnap pra isso.

Isso parece bom, mas se você pensa como eu já sacou um problema: Se cair um raio e fritar meu PC eu me ferrei. Lá se foram meus dois HDs, ZFS, snapshots… Então pra isso eu tenho um HD externo USB de 1TB também com ZFS. É lindo usar ZFS send/receive e manter tudo sincronizado. Uma vez por semana é o suficiente e demora só alguns minutos (ou segundos) pra fazer um backup full da minha pool. Vale lembrar:

chakl

Mas aí, de novo, você está pensando: Tá… Vai que pega fogo na casa, ou estoura um cano e enche o porão de água afogando o PC e o HD externo. Ou alguém arromba no final-de-semana e leva computador, HD externo, etc, etc…  Verdade.

Agora dividi o problema em duas parte: Dados que precisam de backups atualizados (documentos, scripts, configurações) e dados que podem ser feitos backup só uma vez na vida e deixados num canto.

Pro segundo caso fotos são um exemplo clássico. Aquelas fotos de 2009 só preciso fazer backup uma vez e ter certeza que ele vai estar sempre disponível. E mesmo que demore uma semana pra restaurar essas fotos, caso eu as perca, não tem problema.

Minha solução pra esses dados foi usar storage do GCP (Google Cloud Platform). Mais especificamente o Nearline. Com um preço atrativo de 1 centavo de dólar por GB por mês eu estou gastando $0.25/mês pra ter o Google cuidando de 25GB de fotos pra mim. Estou no processo de subir um total de uns 100GB pro nearline de tudo que só preciso de um backup quieto num canto.

A última coisa que falta são as coisas que precisam ser mantidas atualizadas e são mais sensíveis – tanto em termos de disponibilidade como segurança – que são senhas, arquivos bancários, cópias de documentos, etc.

Pra isso acho que – finalmente – estou implementando uma solução. Um HD externo USB de 400GB que eu tinha jogado num canto. Com criptografia LUKS + ZFS eu posso sincronizar semanalmente só o filesystem ZFS específico que armazena esses tipos de dados e levar o disco pro escritório e deixar numa gaveta. Duro vai ser manter a disciplina. Ainda queria uma solução melhor pra esse… Sugestões?

austinpowers