O senhor pode notar que os comentários estão desativados no momento e que muitas postagens antigas do Coding Horror estão sem imagens. Isso se deve ao fato de que, em algum momento da madrugada de sexta-feira, o servidor em que este blog está hospedado sofreu uma perda catastrófica de dados.
O que aconteceu foi o seguinte:
- O servidor sofreu uma falha de rotina no disco rígido.
- Devido à falha no disco rígido, a imagem da máquina virtual que hospeda este blog foi corrompida.
- Como o blog estava hospedado em uma máquina virtual, os procedimentos padrão de backup diário do host não conseguiram fazer o backup.
- Como sou um idiota, não tinha meus próprios backups (recentes) do Coding Horror. Cara, eu gostaria de ter lido algumas boas entradas de blog sobre estratégias de backup!
- Como não havia bons backups, houve uma perda catastrófica de dados. Fin, fechar a cortina, sair do palco à esquerda.
No início, fiquei chateado com nosso provedor, CrystalTech.
Ainda estou confuso sobre como a mais comum, rotineira, previsível e mundana das falhas de hardware de servidor – a perda de um disco rígido mecânico – pode causar uma carnificina tão extrema de perda de dados. E quanto a, oh, não sei, uma matriz RAID? Eles não são projetados para evitar esse tipo de catástrofe de perda de unidade com um único ponto de falha? Uma matriz RAID com várias unidades não é uma espécie de padrão em servidores de data center? Sei que temos matrizes RAID com várias unidades no todos os nossos servidores Stack Overflow.
Eu também gostaria que seus procedimentos de backup de rotina tivessem mais consciência das imagens de máquinas virtuais. Embora eu concorde com o senhor que o backup de uma máquina virtual ativa seja um tanto complexo e normalmente exija suporte especial ao sistema operacional e ganchos de APIo senhor não é exatamente uma ciência desconhecida neste momento. No mínimo, informe-nos quando o backup estiver falhando regularmente todos os dias, todos os dias, durante anos.
Então, tardiamente, percebi que se tratava, afinal, do senhor, meu dados. E é irresponsável da minha parte deixar o destino dos meus dados inteiramente nas mãos de outra pessoaindependentemente de quão confiáveis eles possam ser ou não. A responsabilidade por meus dados começa comigo. Se eu não tomei as medidas adequadas, quem sou eu para criticar os outros por não fazerem o mesmo? Casas de vidro e tudo o mais.
Portanto, eu absolvo o senhor CrystalTech O senhor não tem nenhuma responsabilidade sobre esse assunto. Eles nos ofereceram um ótimo negócio em nosso servidor dedicado, e o desempenho e a confiabilidade (com uma recente, uh… exceção) têm sido excelentes até o momento. É completamente minha culpa o fato de eu ter negligenciado a realização de backups adequados para o Coding Horror. Bem, tecnicamente, eu tinha um backup, mas ele estava na própria máquina virtual. Isso conta? Não? Meio-termo?
Aparentemente, eu estava jogos de azar que nada de ruim aconteceria no data center. Porque é isso que o senhor está fazendo quando não tem seus próprios backups. Jogos de azar.
Vou acrescentar os jogos de azar à longa lista de coisas em que sou péssimo. Não sei quando segurar ou quando desistir.
Agora que já me desculpei, é hora de deixar a cura começar. E por cura, quero dizer o processo dolorosamente excruciante de reconstruir o Coding Horror a partir de caches da Internet e dos poucos backups externos que tenho. Minha primeira tarefa foi perguntar no SuperUser quais estratégias as pessoas recomendam para o recuperar um site perdido sem backup. Estratégias além de me repreender por meu erro óbvio. Além disso, os comentários estão desativados no momento, enquanto o site está sendo reconstruído a partir de HTML estático. O senhor também está desativado enquanto o site está sendo reconstruído a partir de HTML estático, droga!
Vou deixar meu filho Rock Hard Awesome para substituir o comentário que eu sei que alguns dos senhores estavam simplesmente morrendo para ir embora.
Não estou dizendo que não mereço. O senhor me considera totalmente zingatizado.
Mencionei meus problemas no Twitter e fiquei muito feliz com o apoio da comunidade. Agradeço a todos que me procuraram com qualquer tipo de apoio. O senhor é muito grato.
Consegui colocar uma versão HTML estática do Coding Horror no ar quase imediatamente graças a Rich Skrenta, da blekko.com. O senhor gentilmente forneceu um tarball de todas as páginas do site. Algumas pessoas têm objetivos e outras têm metas grandes e audaciosas. A de Rich é especialmente inspiradora: enfrentar o Google em seu território de busca. É por isso que ele tinha em mãos um arquivo de texto completo do Coding Horror. Rich, Eu já lhe disse que o senhor é meu herói? De qualquer forma, o senhor está vendo a versão HTML estática do Coding Horror neste momento, graças ao Rich. Surpreendentemente, não há muita diferença entre uma versão HTML estática deste site e o site ativo. Uma das vantagens de ser minimalista, suponho.
Isso praticamente resolveu todos os meus problemas de recuperação de posts de texto de uma só vez. Por meio desse processo, aprendi que qualquer coisa, mesmo que remotamente popular, que o senhor colocar na Web será arquivada como texto, para sempre, por uma dúzia de aranhas da Web diferentes. Não acho que o senhor possa realmente perder o texto que o senhor publica na Web. Não em um sentido significativo; não sei se é possível. Contanto que o senhor esteja disposto a gastar tempo vasculhando os arquivos de aranhas da Web de alguma forma (e sim, eu trapaceei bastante), sempre é possível recuperar o conteúdo textual, todo ele.
O blog imagens, no entanto, são uma questão completamente diferente. Aprendi da maneira mais difícil que quase não existem organizações que fazem o spidering e o armazenamento de imagens na Web. Sim, há archive.orge que Deus os abençoe por isso. Mas eles têm um trabalho impossível que estão tentando fazer com recursos limitados. Além disso, há… bem, francamente, um monte de nada. Um vazio desesperado e deprimente de nada. Na verdade, se o senhor puder fazer backup de apenas uma coisa em seu site público.., deveria ser as imagens. Porque essa é a coisa que o senhor terá mais dificuldade para recuperar quando ocorrer uma catástrofe. Estou planejando doar US$ 100 para o archive.org, pois tenho uma nova noção de como é raro um serviço de arquivamento completo em toda a Internet, que inclua imagens.
Dito isso, há alguns caminhos limitados e dolorosos a serem explorados para recuperar imagens perdidas de sites. Comecei com um antigo backup completo de meados de 2006 com imagens completas. E, em seguida, Maciej Ceglowski, do serviço de bookmarking de arquivos completos pinboard.in contribuiu generosamente com cerca de 200 publicações de blog para as quais ele tinha imagens.
Também passei por um período em que o eu estava fazendo uma dieta de banda larga e fazendo experiências com a hospedagem de imagens do Coding Horror em outro lugar na Web. Aos poucos, estou analisando e recuperando as imagens localmente de lá. Além disso, vários leitores ávidos do Coding Horror contribuíram com algumas imagens arquivadas – portanto, obrigado a Yasushi Aoki, Marcin Goabiowski, Peter Mortensen e a todos os outros que esqueci.
Além disso, devo salientar que alguns programadores empreendedores propuseram esquemas inteligentes para a recuperação automática de imagens, como Niyaz com sua postagem no blog Obtenha imagens em cache de seus visitantese John Siracusa com seu ideia 304 altamente votada. Ainda não tive tempo de acompanhar essas ideias, mas elas parecem plausíveis para mim.
Restaurei todas as imagens que tinha até agora, mas ainda está muito incompleto. A parte mais importante do Coding Horror é, sem dúvida, o texto das postagens, mas lamento ter perdido imagens importantes de muitas postagens do blog, incluindo aquelas sobre meu filho. Parece uma paternidade irresponsável, no sentido mais amplo possível da palavra.
O processo de recuperação da imagem ainda está em andamento. Se o senhor quiser contribuir com imagens perdidas do Coding Horror, faça-o. Terei o maior prazer em enviar adesivos por correio, por minha conta, para qualquer pessoa que contribua com uma imagem que atualmente seja um 404 no site. Atualização: Isso foi rápido. Carmine Paolino, um estudante de ciência da computação da Universidade de Bolonha, de alguma forma tinha um backup quase completo do site em seu Mac! Graças a esse espelho, já recuperamos quase 100% das imagens e do conteúdo perdidos. Eu me ofereci para doar US$ 100 para a instituição de caridade ou projeto de código aberto da escolha de Carmine.
O que todos nós podemos aprender com essa triste reviravolta nos acontecimentos?
- Eu não presto.
- Não, sério, eu não presto.
- Não confie em seu host ou em qualquer outra pessoa para fazer backup de seus dados importantes. Faça isso o senhor mesmo. Se o senhor não for pessoalmente responsável por seus próprios backups, eles efetivamente não estão acontecendo.
- Se algo realmente ruim acontecer com seus dados, como o senhor se recuperaria? Qual é o processo? Quais são as partes difíceis da recuperação? Acho que, no fundo da minha mente, eu tinha uma falsa confiança nos cenários de recuperação do Coding Horror porque continuava pensando que era basicamente texto. É claro que o texto acabou sendo o mais fácil mais fácil. As imagens, que eu considerava “algo bom de se ter”, eram mais essenciais do que eu imaginava e muito mais difíceis de recuperar. Alguns argumentam que não deveríamos estar falando de “backups”, mas de recuperação.
- Vale a pena revisar seu processo de recuperação periodicamente para ter certeza de que ele ainda está vivo, ativo e totalmente funcional.
- Eu sou incrível! Não, estou brincando. Eu não presto.
Então, quando, exatamente, é o Dia Internacional da Conscientização sobre Backup? Hoje. Ontem. Esta semana. Este mês. Este ano. É uma pergunta capciosa. Todos os dia é o Dia Internacional de Conscientização sobre Backup. E quanto mais cedo eu descobrir isso, melhor será para mim.