ti-enxame.com

Qual solução de backup você usa para servidores Linux

Quais soluções de backup você usa para o servidor Linux no ambiente de produção? Você prefere código aberto ou produtos comerciais?

O que você considera características essenciais no software de backup?

Quais produtos você não recomenda? Existem armadilhas comuns na seleção de software de backup?

15
Juha Syrjälä

Eu uso o openSource Bacula. É excelente - modelo de servidor/cliente que funciona no Windows ou no Linux. Há um bom apoio on-line e uma comunidade de desenvolvedores ativos.

Um pouco complicado para configurar, mas tem todos os recursos que você poderia querer.

Há também uma boa Web GUI chamada bweb que pode ser usado para o funcionamento do dia-a-dia.

12
Brent

No que diz respeito aos recursos essenciais, você precisa usar a ferramenta certa para o trabalho.

Se o seu conjunto de dados for pequeno e se encaixa em um único volume, use o RSNapShot ou o RDIFF-Backup. Ambos oferecem backup incremental, são muito eficientes, e são realmente fáceis de usar.

Para backups maiores ou mais sofisticados que têm um componente offline eu uso bacula, demora um pouco para configurar corretamente, mas é sólido de rock e tem alguns recursos. Eu recomendo acoplá-lo com uma interface web como a webacula.

Uma boa ideia btw, para cada servidor eu uso rdiff-backup para manter um backup incremental diário de/etc em/var/backups /, não lhe custa nada e vai economizar muitas dores de cabeça se você não conseguir descobrir Por que essa última alteração em um arquivo de configuração está causando tanto estragos.

7
Andrew Cholakian

Eu uso rsync, tanto sobre a rede do meu colo para minha casa, e da minha caixa de casa para uma unidade USB removível que eu troco para um eu mantenho na minha mesa no trabalho. O script parece tipo de assim:

#!/bin/sh
STARTTIME=$(date +%s)
HOUR=$(date +%H)
DOW=$(date +%a)
WEEKNUM=$(($(date +%W|sed 's/^0\?//') % 4))
LOG=/tmp/last_hour.log
echo "" > $LOG

for DEST in /media/usb[0-9] ; do
  if [ -d $DEST/allhats2 ] ; then
    echo backing up to $DEST >> $LOG
    YESTERDAY=`cat $DEST/yesterday`
    LASTHOUR=`cat $DEST/last_hour`
    PREV=$DEST/allhats2/hour$LASTHOUR
    if [ ! -d $PREV ] ; then
      echo could not find a directory at $PREV >> $LOG
      PREV=$DEST/allhats2/$YESTERDAY
      if [ ! -d $PREV ] ; then
        echo could not find a directory at $PREV >> $LOG
        PREV=$DEST/allhats2/Sat/
      fi
    fi
    if [ $HOUR = "00" ] ; then
      if [ $DOW = "Mon" ] ; then
        echo moving last monday to week$WEEKNUM
        rm -rf $DEST/allhats2/week$WEEKNUM
        mv $DEST/allhats2/Mon $DEST/allhats2/week$WEEKNUM
      fi
      echo moving last midnight to $YESTERDAY
      rm -rf $DEST/allhats2/$YESTERDAY
      mv $DEST/allhats2/hour$HOUR $DEST/allhats2/$YESTERDAY
      echo $DOW > $DEST/yesterday
    fi
    echo about to backup allhats2 to  hour $HOUR >> $LOG
    rm -rf $DEST/allhats2/hour$HOUR/
    rsync -aSuvrx --delete / /boot /home /usr /var /backup_2/dbs --link-dest=$PREV/ $DEST/allhats2/hour$HOUR/ >> $LOG
    echo $HOUR > $DEST/last_hour
  fi
done

YESTERDAY=`cat /root/yesterday`
if [ $HOUR = "01" ] ; then
  # Backup xen1
  echo about to backup xen1 to /1u_backup/xen1/$DOW/
  rm -rf /1u_backup/xen1/$DOW/
  rsync -aSuvrx --delete -e ssh --exclude /var/spool/news/ [email protected]:/ --link-dest=/1u_backup/xen1/$YESTERDAY/ /1u_backup/xen1/$DOW/

  for DEST in /media/usb[0-9] ; do
          if [ -d $DEST/xen1 ] ; then
                  echo "backing up the backup"
                  rm -rf $DEST/xen1/$DOW/
                  rsync -aSuvrx --delete /1u_backup/xen1/$DOW/ --link-dest=$DEST/xen1/$YESTERDAY/ $DEST/xen1/$DOW/ 
          fi
  done

  # Backup xen
  echo about to backup xen to /1u_backup/xen/$DOW/
  rm -rf /1u_backup/xen/$DOW/
  rsync -aSuvrx --delete -e ssh [email protected]:/ --link-dest=/1u_backup/xen/$YESTERDAY/ /1u_backup/xen/$DOW/

  for DEST in /media/usb[0-9] ; do
          if [ -d $DEST/xen ] ; then
                  echo "backing up the backup"
                  rm -rf $DEST/xen/$DOW/
                  rsync -aSuvrx --delete /1u_backup/xen/$DOW/ --link-dest=$DEST/xen/$YESTERDAY/ $DEST/xen/$DOW/ 
          fi
  done

  echo done

  echo $DOW > /root/yesterday
fi
4
Paul Tomblin

Eu uso o Jungledisk com o armazenamento de arquivo de cloudspace. Apenas vai todas as noites e faz sua coisa, eu apenas conto o que fazer backup, e até mesmo mantém revisões (uma espécie de). Fora do local e bastante barato.

3
Daniel Huckstep

Este documento explica de uma maneira muito boa e detalhada como usar o RSYNC para backups incrementais no Linux.

2
Luke

Estou usando backuppc para todos os meus hosts. Apenas a loja de 500 GB de Maildir era problemática porque rsync realmente usou muito RAM no lado de recebimento. Eu mudei para usar os incrementos de base de tar e time-selo para esse host.

2
David Schmitt

Se você está procurando um sistema baseado em disco (em vez de fita ou desligamento ou somethign), eu sugiro olhar para backuppc . Nós tivemos uma boa experiência com isso. Parece fazer um bom trabalho de reunir arquivos para obter bom uso do espaço em disco, é muito configurável e foi sólido para nós.

2
palehorse

Eu sugiro Bacula que atualmente usá-lo em nossa loja. Também funciona com o Windows, se você achar que tem necessidade disso. :)

Outra sugestão pode ser Amanda, no entanto, nunca usei, embora os dois sejam frequentemente comparados uns contra os outros.

Bacula é um conjunto de programas de computador que permitem que você (ou o administrador do sistema) gerencie backup, recuperação e verificação de dados do computador em uma rede de computadores de diferentes tipos. Em termos técnicos, é um programa de backup baseado em rede/servidor. A 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. Devido ao seu design modular, a Bacula é escalável de pequenos sistemas de computador único para sistemas que consistem em centenas de computadores localizados em uma rede grande.

2
bobbyrcox

estou feliz usuário de backupninja script de brasão de wrapper. Está disponível no Debian como pacote no repositório padrão.

dependendo do tipo de dados, uso diretamente backup do rdiff mencionado pelo Andrew Cholakian, ou primeiro tire o instantâneo do volume do LVM [mencionado por Tinkertim] e execute o RDIFF-Backup nele.

o rdiff-backup não funciona muito eficientemente sobre links de rede ruins, em tais casos, executo o rdiff-backup localmente e use o RSYNC para sincronizar o repositório de backup com o servidor remoto.

1
pQd

No mundo proprietário, R1soft está fazendo um trabalho muito bom. Experimente as ferramentas de demonstração que eles liberam gratis.

No mundo livre, uso instantâneos LVM, DD e Netcat para fazer backups rápidos. Apenas certifique-se de que o DM_SNAPSHOT exista em seu initrd :)

1
Tim Post

Onde você gostaria de fazer backup? O RSYNC pode ser uma ferramenta inestimável para manter uma cópia de diretórios em sincronia se você gostaria de fazer backup para outro servidor Linux. Você pode manter os backups baseados no tempo, aproximando-se de um backup anterior. Você está essencialmente recebendo um backup completo a cada vez, mas só retirará arquivos que foram alterados. Aqui está um exemplo Bash Script que usará o RSYNC, não se esqueça de ler os comentários.

#!/bin/bash

# If you want to automate this script you will need to generate public/private
# key pairs for the user executing this script on the remote server. 

# Change these variable to reflect where you want the backups to be stored
# and what servers will get backed up. Servers are seperated by spaces, do
# not use commas.
BACKUPLOCATION='/backups'
SERVERS=( testserver.example.com )
RSYNC='/usr/bin/rsync'

# These are variables used internally to the script DO NOT CHANGE!
TODAYSDATE=`date +%Y-%m-%d-%H`
FOLDERNAME='Backup-'$TODAYSDATE
CURRENTBACKUP='CurrentBackup'
USELINK=0

backup() {
    # Test and make sure that the folder we are backing up to is writable
    if [ -w $BACKUPLOCATION ]; then
        # The folder we are backing up to is writable no problems
        echo The backup destination is writable, continuing.
    else
        mkdir -p $BACKUPLOCATION
        if [ $? -eq 0 ]; then
            echo "Backup directory '$BACKUPLOCATION' was created"
        else
            # We can't write to the folder alert the user and stop the backup
            echo The backup destination is not writable! Backup Failed!
            exit 1
        fi
    fi

    # If there are older backups then use them as a source directory
    if [ -h "$BACKUPLOCATION/$CURRENTBACKUP" ]; then
        echo
        echo "Previous backup found... Will link to unchanged files..."
        LASTBACKUP=`ls -l $BACKUPLOCATION | grep $CURRENTBACKUP | awk '{ print $11 }'`
        echo $LASTBACKUP
        echo "Deleting Old Link..."
        rm -f $BACKUPLOCATION/$CURRENTBACKUP
        USELINK=1
    fi

    for SERVER in ${SERVERS[@]}
    do
        echo
        THISRUNLOC=$BACKUPLOCATION/$FOLDERNAME/$SERVER
        mkdir -p $THISRUNLOC

        if [ $USELINK -eq 1 ]; then
            OPT="-a --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/tmp --delete --link-dest=$LASTBACKUP/$SERVER $SERVER:/ $THISRUNLOC"
        else
            OPT="-a --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/tmp $SERVER:/ $THISRUNLOC"
        fi
        #echo "Performing: rsync $OPT"
        echo "Backing up server: $SERVER"
        $RSYNC $OPT
        if [ $? -eq 0 ]; then
            echo "Success!"
        else
            echo "Backup failed with an error code of $?"
        fi
        echo
    done

    echo "Creating New Link..."
    ln -s $BACKUPLOCATION/$FOLDERNAME $BACKUPLOCATION/$CURRENTBACKUP
    echo "Backup Complete!"
}

restore() {
        # I didn't write the restore code you can simply copy the files back
}

case $1 in
    backup)
        echo "Running the backup..."
        backup
        ;;
    restore)
        echo "Restoring backup..."
        restore
        ;;
    *)
        echo "Run this command with either backup or restore"
        ;;
esac
1
TrueDuality

Eu não posso acreditar que ninguém mencionou duplicidade . Eu não posso recomendar o suficiente. Ele tem vários backends - de FTP para SSH para S3 - e faz criptografia (GPG) e backups incrementais, e o processo de restauração é assustadoramente fácil.

0
pjz

Dirvish

O que você considera características essenciais no software de backup?

  • Ser capaz de restaurar muito facilmente
  • Não desperdiça armazenamento ou largura de banda para os backups
0
Zoredache