您为Linux服务器使用哪种备份解决方案


15

您在生产环境中为linux服务器使用哪些备份解决方案?您喜欢开源还是商业产品?

您认为备份软件中必不可少的功能是什么?

您不推荐哪些产品?备份软件的选择是否存在一些常见的陷阱?


不过,旧问题还是LuckyBackup也是一个有效的答案。
Nikos Alexandris

Answers:


12

我使用开源bacula。这非常好-在Windows或Linux上均可运行的服务器/客户端模型。有良好的在线支持和活跃的开发人员社区。

设置起来有些棘手,但是具有您可能想要的所有功能。

还有一个很好的Web GUI,称为bweb,可用于其日常操作。


嗨,我正在尝试在我的办公室部署bacula,这非常棘手。如果您有任何安装文档可以请你分享它..
卡特彼勒

抱歉,我只是使用在线文档。
布伦特2010年

7

就基本功能而言,您需要使用正确的工具来完成工作。

如果您的数据集很小并且适合单个卷,请使用rsnapshot或rdiff-backup。两者都提供增量备份,非常节省空间,并且非常易于使用。

对于具有脱机组件的更大或更复杂的备份,我使用Bacula,需要花费一些时间进行正确设置,但它坚如磐石并且具有许多功能。我建议将其与webacula之类的Web界面耦合。

顺便说一句,对于我拥有的每台服务器,我都使用rdiff-backup在/ var / backups /中保持/ etc的每日增量备份,它不花任何费用,并且如果您不知道,将为您省去很多麻烦为什么最后一次更改配置文件会造成如此大的破坏。


4

我使用rsync,既可以通过网络从我的Colo到我的家,也可以从我的家庭盒子到一个可移动的USB驱动器,然后我将其换成一个我可以一直放在办公桌上的USB驱动器。该脚本看起来像这样:

#!/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/ root@xen1:/ --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 root@xen:/ --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

+1:...用于rsync;我使用的是同一件事:-)
乔恩·凯奇


@NikosAlexandris,我不会使用名称为“ lucky”的备份产品-我不喜欢“如果幸运的话,您将能够恢复它”的含义。
Paul Tomblin

:D-不过,请检查项目主页中的“奖项”。
Nikos Alexandris


2

我正在为所有主机使用backuppc。只有500GB的maildir存储存在问题,因为rsync接收侧确实使用了过多的RAM。我切换到对该主机使用tar和时间戳基础增量。



2

如果你正在寻找一个基于磁盘的系统(而不是磁带或异地或somethign),我会建议看backuppc的。我们对此有很好的经验。似乎很好地将文件池化以充分利用磁盘空间,它是可配置的,并且对我们来说是坚如磐石。


2

我建议我目前在我们的商店中使用Bacula。如果您发现有需要,它也可与Windows一起使用。:)

另一个建议可能是Amanda,但是我从未使用过,尽管经常将两者相互比较。

Bacula是一组计算机程序,可让您(或系统管理员)在不同类型的计算机网络上管理备份,恢复和验证计算机数据。从技术上讲,它是基于网络客户端/服务器的备份程序。Bacula相对易于使用和高效,同时提供了许多高级存储管理功能,可轻松查找和恢复丢失或损坏的文件。由于采用模块化设计,Bacula可从小型单计算机系统扩展到由位于大型网络上的数百台计算机组成的系统。


2

本文档以一种非常详尽的方式很好地说明了如何在Linux上使用rsync进行增量备份。


1

在专有领域,R1Soft做得非常好。尝试免费发布的演示工具。

在自由世界中,我使用lvm快照,dd和netcat进行快速备份。只要确保indrd中存在dm_snapshot :)


1

我是backupninja包装程序bash脚本的用户,非常高兴。它可以在debian中作为标准存储库中的软件包提供。

根据数据类型,我直接使用Andrew Cholakian提到的rdiff-backup,或者先对LVM卷进行快照(由tinkertim提到),然后对其运行rdiff-backup。

rdiff-backup在不良的网络链接上无法非常有效地工作,在这种情况下,我在本地运行rdiff-backup,然后使用rsync将备份存储库与远程服务器同步。


1

您想备份到哪里?如果您想备份到另一台Linux服务器,rsync可以是使目录副本保持同步的宝贵工具。您可以通过采购以前的备份来保留基于时间的备份。从本质上讲,您每次都将获得完整备份,但它只会提取已更改的文件。这是一个使用rsync的bash脚本示例,请不要忘记阅读注释。

#!/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

0

苦恼

您认为备份软件中必不可少的功能是什么?

  • 能够非常轻松地还原
  • 不会浪费存储空间或带宽用于备份

0

我不敢相信没有人提到过重复性。我不能高度推荐它。它具有多个后端-从FTP到ssh到S3-并进行加密(gpg)和增量备份,并且还原过程非常简单。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.