在生产环境中用于Linux服务器的备份解决scheme是什么? 你更喜欢开源还是商业产品?
你认为什么是备份软件的基本function?
你不推荐哪些产品? 备份软件select有什么常见的缺陷?
我使用openSource bacula 。 这是非常好的 – 在Windows或Linux上运行的服务器/客户端模型。 有很好的在线支持,还有一个积极的开发者社区。
有点棘手的设置,但拥有你想要的所有function。
还有一个叫做bweb的 web gui,可以用来进行日常的操作。
就基本function而言,您需要使用正确的工具来完成这项工作。
如果您的数据集很小并且适合于单个卷,请使用rsnapshot或rdiff-backup。 两者都提供增量备份,非常节省空间,而且非常易于使用。
对于具有脱机组件的较大型或更复杂的备份,我使用Bacula,需要一段时间才能正确设置,但它坚如磐石,并具有相当多的function。 我build议将它与Webacula之类的Web界面结合起来。
一个好主意btw,对于我有的每台服务器,我都使用rdiff-backup在/ var / backups /中保存/ etc的每日增量备份,这不需要花费任何代价,如果无法弄清楚,将会为您节省很多麻烦为什么最后一次改变一个configuration文件造成这么大的破坏。
我使用rsync,通过networking从我的可乐到我的家,从我的家到一个可移动的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
我使用Rackspace云文件存储的jungledisk。 它只是每天晚上做的事情,我只是告诉它备份什么,它甚至保持修改(sorting)。 场外,而且相当便宜。
我为所有主机使用backuppc 。 只有500GB的maildir存储是有问题的,因为rsync在接收端真的使用了太多的RAM。 我切换到使用焦油和时间戳基地增量为主机。
BackupExec ,免费的RALUS * NIX代理 。 轻松导出,不需要SAMBA,适合代理备份的Windows服务器。
如果你正在寻找一个基于磁盘的系统(而不是磁带或异地或某些),我会build议看看BackupPC。 我们有很好的经验。 它似乎很好地合并文件,以便在磁盘空间中获得良好的使用,这是非常可configuration的,并且对我们来说已经非常稳定。
我build议Bacula我目前在我们的商店使用它。 它也适用于Windows,如果你发现你有需要的话。 🙂
另一个build议可能是阿曼达,但我从来没有使用过,虽然两者往往是相互比较。
Bacula是一套计算机程序,允许您(或系统pipe理员)通过不同种类的计算机networkingpipe理计算机数据的备份,恢复和validation。 从技术上讲,这是一个基于networking客户端/服务器的备份程序。 Bacula相对容易使用且高效,同时提供许多先进的存储pipe理function,可以轻松find并恢复丢失或损坏的文件。 由于其模块化devise,Bacula可以从小型单一计算机系统扩展到由数百台位于大型networking上的计算机组成的系统。
本文档以非常好和详细的方式解释了如何在Linux上使用rsync进行增量备份。
在专有的世界里, R1Soft做得非常好。 尝试免费发布的演示工具。
在自由世界中,我使用lvm快照,dd和netcat来快速备份。 只要确保您的initrd中存在dm_snapshot 🙂
我很高兴backupninja包装bash脚本的用户。 它在Debian中作为标准存储库中的包提供。
根据Andrew Cholakian提到的直接使用rdiff-backup的数据types,或者首先获取LVM卷(由tinkertim提到)的快照,然后在其上运行rdiff-backup。
在这种情况下,rdiff-backup不能很好地工作,在这种情况下,我在本地运行rdiff-backup,然后使用rsync将备份存储库与远程服务器同步。
你想在哪里备份? 如果你想备份到另一台linux服务器,rsync可以成为保持目录副本同步的非常有用的工具。 您可以通过采购以前的备份来保留基于时间的备份。 你基本上每次都得到一个完整的备份,但它只会提取已经改变的文件。 这里是一个示例bash脚本,将使用rsync,不要忘记阅读评论。
#!/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
Dirvish
你认为什么是备份软件的基本function?
我不敢相信没有人提到Duplicity 。 我不能高度推荐它。 它有多个后端 – 从FTP到ssh到S3 – 还有encryption(gpg)和增量备份,还原过程非常简单。