Como fazer backup de um servidor Centos completo?


24

Mudei algumas semanas atrás de um servidor dedicado para um VPS. Agora que tudo está funcionando bem no VPS, eu gostaria de desligar o servidor dedicado e fechar minha conta na empresa de hospedagem.

Para maior tranquilidade e segurança, eu gostaria de fazer um backup completo do servidor antes de pará-lo.

O melhor seria um backup que eu pudesse procurar se achar que preciso de algo no backup.

Qual seria a melhor solução na linha de comando?

Atualização:

Médio: Rede

Respostas:


28

A melhor ferramenta a ser usada para isso é provavelmente o dump, que é uma ferramenta padrão do Linux e fornecerá todo o sistema de arquivos. Eu faria algo assim:

/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish user@backupserver.example.com dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz

Isso fará um dump do sistema de arquivos de / (verifique se você não precisa despejar outras montagens!), Comprima-o com gzip e ssh-lo em um servidor remoto (backupserver.example.com), armazenando-o em / backup / . Se você precisar procurar mais tarde pelo backup, use restore:

restore -i

Outra opção, se você não tem acesso ao dump, é usar tar e fazer algo como

tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp .

Mas o tar também não lida com mudanças no sistema de arquivos.


esse comando dump também cuida dos programas instalados, certo? como nginx, etc.
Thale

Dump é uma cópia literal do sistema de arquivos, com tudo lá. Contanto que você não tenha mais de um (verifique executando mount), é tudo o que você precisa.
Bill Weiss

Eu entendi-bash: /sbin/dump: No such file or directory
Lucas Bustamante

@LucasB Pode ser necessário instalar o dump. No Ubuntu, você faz algo comosudo apt-get install dump
pehrs 8/16

@pehrs como você restaura usando o .gzarquivo? Você pode adicionar isso na sua resposta. Isso realmente ajudaria.
Red Bottle

10

Se você deseja fazer backup do Linux para Linux, eu não usaria o dump, porque é inconveniente quando você precisa acessar algo dentro do arquivo de backup. Basta usar rsynco SSH para fazer um backup completo do sistema na maioria dos casos:

rsync -aAXv --delete-after --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / user@server:backup-folder

Isso manterá tudo importante e permitirá que você navegue no backup sem etapas adicionais.

Você pode adicionar a --deleteopção do rsync se estiver executando isso várias vezes na mesma pasta de backup. Nesse caso, verifique se o caminho de origem não termina com /*, ou essa opção terá efeito apenas nos arquivos dentro dos subdiretórios do diretório de origem, mas não terá efeito nos arquivos que residem diretamente dentro do diretório de origem.


3

Em que meio você armazenará o backup? Se você estiver fazendo backup pela rede, eu sshfs / nfs montaria meu destino no servidor de origem e executaria algo como:

tar cvjf /<remote_mnt>/<point>/source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/<remote_mnt>

Note que não foi testado, apenas o meu pensamento geral você pode querer excluir mais ou menos do que isso.


3

Eu uso o comando descrito acima a partir de pehrs, mas modificado para uso de ftp. Amostra Crontab:

30 3 1 * * sudo /sbin/dump -0uan -f server-full-backup-root-`date '+%d-%B-%Y'`.dump / && gzip -1 /<path_to_backup_file>/server-full-backup-root-`date '+%d-%B-%Y'`.dump
50 * * * * lftp -f upload.x

upload.x contém credenciais ftp e regras para upload:

open -u user,password -p 21 192.168.1.1
mirror -c -e -R /<path_to_backup_folder> /<path_to_remote_folder_without_trailing_slash>
exit

Nota 1: o lftp pode causar alto uso da CPU quando o destino estiver inacessível ao tentar se reconectar. Como muitos VPSs de hospedagem podem ser redefinidos nesses casos, sugiro monitorar a carga da CPU para eliminar o processo lftp, impedindo que o servidor seja desligado pelo proprietário do host. Um exemplo para a média de carga> 1,33 para processos lftp (e dropbox). Infelizmente, não me lembro da fonte do código inicial, graças a alguém:

Crontab */5 * * * * /home/cms/cron/loadmon.sh

#!/bin/bash
FROM_EMAIL_ADDRESS=cms
  trigger=1.33
  load=`cat /proc/loadavg | awk '{print $1}'`
  response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
if [[ $response = "greater" ]]
then
  killall dropbox lftp
  nice -n 19 sh /cms/.dropbox-dist/dropboxd
  sar -q | mailx -s "High load on server - [ $load ]" r***s@gmail.com
fi

Nota 2: o utilitário de despejo pode não funcionar no OpenVZ VPS ou em outros servidores virtuais.


2

você já ouviu falar de Bacula ?

Bacula é um conjunto de programas de computador de código aberto, prontos para empresas, que permitem que você (ou o administrador do sistema) gerencie o backup, a recuperação e a verificação dos dados do computador em uma rede de computadores de diferentes tipos. O Bacula é relativamente fácil de usar e eficiente, oferecendo muitos recursos avançados de gerenciamento de armazenamento que facilitam a localização e recuperação de arquivos perdidos ou danificados. Em termos técnicos, é um programa de backup de código aberto, pronto para empresas e baseado em rede.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.