web-dev-qa-db-ja.com

Linuxサーバーに使用するバックアップソリューション

本番環境のLinuxサーバーに使用するバックアップソリューションは何ですか?オープンソース製品と商用製品のどちらが好きですか?

バックアップソフトウェアの重要な機能と思われるものは何ですか?

あなたがお勧めしない製品はどれですか?バックアップソフトウェアの選択によくある落とし穴はありますか?

15
Juha Syrjälä

私はオープンソースを使用していますbacula。それは素晴らしいです-WindowsまたはLinuxで動作するサーバー/クライアントモデル。優れたオンラインサポートと活発な開発者コミュニティがあります。

設定は少し難しいですが、必要なすべての機能を備えています。

bwebと呼ばれる素敵なWeb GUIもあり、日常の操作に使用できます。

12
Brent

重要な機能に関する限り、仕事に適したツールを使用する必要があります。

データセットが小さく、単一のボリュームに収まる場合は、rsnapshotまたはrdiff-backupを使用してください。どちらも増分バックアップを提供し、スペース効率が非常に高く、非常に使いやすいです。

私がBaculaを使用しているオフラインコンポーネントを含む大規模またはより高度なバックアップの場合、適切にセットアップするのに時間がかかりますが、それは堅実で、かなりの数の機能があります。 webaculaのようなWebインターフェイスと結合することをお勧めします。

ところで、私が持っているすべてのサーバーについて、rdiff-backupを使用して/ etcの毎日の増分バックアップを/ var/backups /に保持します。費用はかからず、理解できない場合は多くの頭痛の種を節約できます。構成ファイルへの最後の変更が非常に大きな混乱を引き起こしている理由。

7

私はrsyncを、コロから自宅までのネットワークと、ホームボックスからリムーバブル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
4
Paul Tomblin

Rackspaceクラウドファイルストレージでjunglediskを使用しています。それは毎晩行ってそのことを実行し、何をバックアップするかを指示するだけで、改訂(一種)も保持します。オフサイトで、かなり安価です。

3
Daniel Huckstep

このドキュメント Linuxで増分バックアップにrsyncを使用する方法を非常に詳細に説明しています。

2
Luke

すべてのホストに backuppc を使用しています。 rsyncが実際に受信側でRAM)を使いすぎたため、500GBのmaildirストアのみが問題でした。そのホストにtarとタイムスタンプベースの増分を使用するように切り替えました。

2
David Schmitt

BackupExec 、無料で RALUS * NIXエージェント 。簡単にエクスポートでき、SAMBAを必要とせず、エージェントによってバックアップされているWindowsサーバーに適合します。

2
Mark Brackett

(テープ、オフサイト、または何かではなく)ディスクベースのシステムを探している場合は、 BackupPC を調べることをお勧めします。私たちはそれで良い経験をしました。ディスクスペースを有効に活用するためにファイルをプールすることはうまくいくようです。それは非常に構成可能であり、私たちにとって堅実です。

2
palehorse

私は現在当店で使用しているBaculaをお勧めします。あなたがそれを必要としていることに気付いた場合、それは窓でも機能します。 :)

別の提案はアマンダかもしれませんが、私はそれを使ったことがありませんが、2つはしばしば互いに比較されます。

Baculaは、ユーザー(またはシステム管理者)がさまざまな種類のコンピューターのネットワーク全体でコンピューターデータのバックアップ、回復、および検証を管理できるようにするコンピュータープログラムのセットです。技術的には、ネットワーククライアント/サーバーベースのバックアッププログラムです。 Baculaは比較的使いやすく効率的ですが、紛失または破損したファイルを簡単に見つけて回復できる高度なストレージ管理機能を多数提供しています。そのモジュラー設計により、Baculaは、小さな単一のコンピューターシステムから、大規模なネットワーク上に配置された数百台のコンピューターで構成されるシステムまで拡張可能です。

2
bobbyrcox

backupninja ラッパーbashスクリプトのユーザーに満足しています。標準リポジトリのパッケージとしてdebianで利用できます。

直接使用するデータの種類に応じて rdiff-backup Andrew Cholakianが言及するか、最初にLVMボリュームのスナップショットを取り[tinkertimが言及]、次にrdiff-backupを実行します。

rdiff-backupは、不良ネットワークリンク上ではあまり効率的に機能しません。そのような場合、ローカルでrdiff-backupを実行してから、rsyncを使用してバックアップリポジトリをリモートサーバーと同期します。

1
pQd

プロプライエタリの世界では、 R1Soft は非常に良い仕事をしています。彼らが無料でリリースするデモツールを試してみてください。

自由な世界では、lvmスナップショット、dd、netcatを使用して迅速なバックアップを作成しています。 dm_snapshotがinitrdに存在することを確認してください:)

1
Tim Post

どこにバックアップしますか? rsyncは、別のLinuxサーバーにバックアップする場合に、ディレクトリのコピーの同期を維持するための非常に貴重なツールになる可能性があります。以前のバックアップを調達することにより、時間ベースのバックアップを維持できます。基本的に毎回完全バックアップを取得していますが、変更されたファイルのみがプルされます。これは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
1
TrueDuality

誰も言及していないなんて信じられない 重複 。私はそれを十分に推薦することはできません。 FTPからssh、S3までの複数のバックエンドがあり、暗号化(gpg)と増分バックアップを実行し、復元プロセスは非常に簡単です。

0
pjz

ダルヴィーシュ

バックアップソフトウェアの重要な機能と思われるものは何ですか?

  • 非常に簡単に復元できる
  • バックアップのためにストレージや帯域幅を無駄にしません
0
Zoredache