Queremos fazer um backup de tudo em nosso servidor Debian, que está sendo executado remotamente no outro lado do mundo (hospedado por Linode), sem desligá-lo.
Este sistema está executando shell, email, XMPP / prosody e web, com algumas configurações simples do nginx.
Queremos fazer backup de arquivos relacionados a essas coisas apenas por segurança. Por exemplo, arquivos que os usuários armazenaram em seus diretórios pessoais.
Não precisamos copiar exatamente a configuração existente em cada arquivo / etc; em vez disso, a razão pela qual estamos fazendo o backup em primeiro lugar é para que possamos mudar tudo para uma nova configuração (versão mais recente do Debian ainda no Linode).
Vejo que o Linode oferece um serviço de backup. Mas, a longo prazo, também precisamos de nossos próprios backups, aqui, caso eles falhem ou algo mais estranho aconteça.
A razão pela qual essa pergunta existe é que, quando tentei fazer backups no passado, cometi um destes dois erros:
- Eu disse "OK, vou copiar
/
e tudo o que há embaixo" e fiquei preso em um loop infinito estranho, porque a unidade para a qual eu estava copiando estava montada em / media / backup e ela estava se copiando recursivamente [obv esse problema específico não aplicável aqui, já que vamos fazer backup via rsync ou similar] ou ele ficou parado ao tentar copiar algumas coisas "vivas" em / proc ou / var ou qualquer outra coisa, como tentar acompanhar os registros em constante mudança, ou - Eu disse "OK, vou pegar o mínimo necessário do que precisamos ... hmm, os diretórios pessoais de todos e os diretórios de servidores da web (todos abaixo
/var
) e vamos pegar uma cópia/etc
e todos os e-mails antigos em / var / vmail "e invariavelmente danifiquei as permissões ou os carimbos de data / hora do arquivo (dessa vez, certificarei-me de não fazer backup dos arquivos unix em uma unidade FAT) ou esqueci alguma coisa (" oh, dispara, eu tinha alguns scripts personalizados em / usr / local / bin que nunca guardei em nenhum outro lugar, esqueci de pegá-las, acho que elas se foram agora ").
Portanto, a cópia óbvia de toda a unidade levou a armadilhas e a cópia seletiva de diretórios levou a armadilhas. Eu quero saber como fazer isso direito.
A questão de falha no servidor O que é necessário para um sistema de backup completo? aborda filosofia e boas práticas, mas estou procurando esses detalhes mais específicos de:
- Quais diretórios eu preciso copiar e quais eu excluo (dado que é um sistema que está sendo executado no momento e que fornece um wiki, bate-papo XMPP, e-mail - com novas mensagens entrando enquanto o trabalho de cópia está em execução)
- Quais atributos de arquivo, como registro de data e hora, proprietário e grupo, preciso apresentar e como faço isso? ← Acho que posso responder essa metade da pergunta com algo como ... hum ...
rsync -HXaz
acho que é uma boa opção para nós? O-z
obv não está realmente relacionado à questão que é "o que preservo"
Muitos conselhos de backup que vejo, como usar dd
, parecem pressupor que a unidade está desmontada e não está em uso. Mas eu não deveria excluir "vivo" diretórios como o / proc e alguns dos subdiretórios sob / var (No entanto, algumas das coisas em / var Eu sei que nós definitivamente fazer necessidade de manter) e / mount? No que mais preciso pensar nessa situação? Então eu acho que posso apenas snarf-lo com rsync e usando um monte de --exclude
sinalizadores.
Ou existem idéias melhores, especialmente as que são compatíveis com o software livre?
cp -r -a
preservará o maior número possível de atributos de arquivo ao copiar arquivos (com base no que o sistema de arquivos de destino suporta). O-a
sinalizador instruicp
a preservar atributos. Para copiar em uma rede ou através de um sistema de arquivos que não oferece suporte aos atributos necessários,tar -c
sempre funcionou para mim, embora eu acredite que haja alguns casos extremos que ele não cobre e, em particular, acredito que,tar
por padrão, depende de nomes de usuários correspondentes a ambos os sistemas. Dito isto, copiei um sistema Linux inteiro (não montado) usandotar
sem problemas aparentes.Respostas:
Então você deseja fazer backup de toda a sua unidade sem todos esses erros desagradáveis e também filtrar todas as pastas / proc e outras pastas temporárias?
Uma opção é montar a pasta raiz em outra pasta dentro do sistema de arquivos, assim:
Isso fornecerá todos os arquivos existentes em sua unidade que não são considerados temporários (como as pastas / proc ou / sys).
Agora que você tem uma visão limpa da sua pasta raiz, basta copiá-la para sua unidade de backup usando o padrão
cp
oursync
. Algo ao longo das linhas de:Isso resolve os dois problemas mencionados:
Veja também: montagem do homem (8)
fonte
No Linux, tudo é um arquivo. É possível via rsync, mas há coisas que você deve saber, que são (na melhor das hipóteses) difíceis de contornar.
Você deve pensar em replicação primeiro, especialmente para bancos de dados. Também é uma boa idéia configurar o balanceador de proxy / carga na frente do servidor principal, para que você possa alternar facilmente com os servidores primário e espelho durante a transição.
No nível do hardware, a melhor situação será ter um servidor espelhado do outro lado, com o mesmo número de portas ethernet, o mesmo layout de disco rígido e assim por diante. Tudo o que difere implica a necessidade de alterações na configuração do sistema.
ou seja, se você possui duas portas eth, deseja garantir que a configuração da rede, o firewall etc. correspondam ao nome da interface nos dois servidores e, caso seja diferente, é necessário alterar a configuração após o rsync ou alterar o nome do dispositivo no segundo servidor (destino).
O mesmo com o layout da partição. Você deve criar as mesmas partições que no servidor principal, mas se você as criar do zero, terá UUIDs diferentes, portanto precisará alterar o fstab, o grub, o mdadm (se houver ataque suave) e assim por diante. .
Mas também existem muitas coisas que podem dar errado, como bancos de dados, que podem ser inconsistentes se não forem interrompidas anteriormente (antes de executar o rsync).
A melhor estratégia será preparar primeiro o hardware e o sistema de arquivos (partições) - para corresponder à configuração do servidor principal. Em seguida, monte parititons vazios através do sistema intermediário (como CD ao vivo com o ssh-server instalado temporariamente). Você cria / proc, / dev, / sys vazios e depois sincroniza o restante, da seguinte forma:
Então você precisa instalar o grub no dispositivo e trabalhar na configuração, para torná-lo inicializável, alterar a configuração da rede, o fstab e outros itens mencionados anteriormente.
Você também pode tentar instalar um sistema novo (com a mesma versão que você está usando no servidor principal), depois desligá-lo, montá-lo por outro sistema temporário (como o live cd) e substituir qualquer outro item que não seja / proc, / sys, / dev e / boot com o rsync.
Mas é apenas uma ideia geral. As coisas podem complicar, dependendo do que você realmente tem neste servidor, qual é a sua configuração, rede e instalação de hardware. E, no final das contas, isso pode ser realmente difícil ou impossível sem tempo de inatividade perceptível.
fonte
kill -9
seguro ou poderá falhar na recuperação. Um bom banco de dados deve lidar com essa situação, mas um número surpreendente de produtos não (ou pior, eles quase sempre se recuperam, mas falham uma vez na lua azul quando você realmente precisa deles para trabalhar). Portanto, na prática, a replicação é provavelmente mais confiável de qualquer maneira.O que você realmente quer é restaurar. Faça o que fizer, você deve restaurar testá-lo regularmente.
O Linode possui um serviço de backup. Os instantâneos podem ser obtidos em um agendamento predefinido limitado ou com uma API.
Uma vantagem dos backups baseados em instantâneos é que eles oferecem um momento preciso, pois os dados não são alterados enquanto uma cópia é feita. Os instantâneos também podem ser facilmente restaurados em um host diferente, um novo Linode nesse caso.
fonte
Estou usando o BackupPC no meu pequeno servidor virtual privado, isso funciona razoavelmente bem. O BackupPC pode usar o rsync sob o capô e suporta backups completos e incrementais. Dê uma olhada e veja se isso atenderia às suas necessidades.
fonte
Execute seu sistema no ZFS. Em seguida, você pode tirar um instantâneo atômico instantâneo usando algo semelhante a:
onde
tank
está o nome do seu pool ZFS. Esse instantâneo é garantido como instantâneo instantâneo e instantâneo do sistema de arquivos e de todos os seus sistemas filhos.Depois de criar o instantâneo, você pode transferi-lo para outro host usando
zfs send
essh
.fonte
Na minha opinião, depende do que e onde você estiver executando o servidor com o comando linux interno, não for possível, você deve imitar / canalizar dados e bibliotecas completos. Se você estiver executando no vmware e configurado corretamente, ele fornece migração ao vivo. Ou então você tem que usar ferramentas de terceiros. Espero que isso ajude você. Mais algumas referências Como faço para fazer backup de um servidor ativo?
Rsync é um bom comando para sincronizar os dados entre servidores.
fonte
Existem 2 soluções disponíveis, nas quais você não precisa mais confiar em bits ausentes, nem em um item da lista por causa de uma lista de verificação incompleta ou talvez apenas por algo esquecido.
Primeiramente, se você mover isso para uma plataforma com mais controle sobre a plataforma de hardware subjacente, poderá tirar instantâneos de disco de todos os arquivos enquanto o servidor estiver em execução. Por exemplo, na AWS, você pode capturar instantaneamente um disco EBS e pagar apenas pelas diferenças ao fazer outro instantâneo posteriormente.
Em segundo lugar, recomendo criar um script para a configuração do seu servidor completo com um sistema de gerenciamento de configuração, como o Ansible. Isso vai
documentar tudo o que você configurou no controle de origem
permitem testar a recriação do servidor a partir de backup ou bare metal, para garantir que seus scripts estejam atualizados
permitem executar novamente o script em um sistema operacional mais recente, geralmente com alterações muito pequenas.
fonte