web-dev-qa-db-ja.com

Linuxサーバー上のテラバイトと大量の静的ファイルをバックアップするためのバックアップソリューション?

実稼働Linuxサーバー上のテラバイトと大量のファイルをバックアップするためにどのバックアップツールまたはソリューションを使用しますか?
ファイルはすべて異なり、ほとんど変更されないことに注意してください。使用量はほとんどファイルを追加するため、データ量は現在3TBであり、1日あたり約+ 15GBで常に増加しています。

Rsyncに返信しないでください。基本的なUNIXツールでは不十分であり、rsyncは履歴を保持せず、rdiff-backupはときどき惨めに失敗し、履歴を台無しにします。さらに、これらはすべてファイルベースのバックアップであり、ディレクトリを参照してstat()をクエリするためだけに多くのIOwaitを配置します。しかし、R1Soft CDPを除いて、それを回避する方法はないと思います。

ブロックレベルのバックアップであるR1SoftCDPバックアップを試しましたが、他のすべてのサーバーでは良好で効率的であることがわかりましたが、3テラバイトと数十億のファイルがあるサーバーでは体系的に失敗します。 R1Softとデータセンターのエンジニアがホットボールゲームをプレイしているのはすでに2か月以上です...それでも、通常のrsync以外のバックアップはありません

R1Soft CDPは、サーバーをホストしているデータセントによってオプションのサービスとして提供されていたため、大きな商用ソリューションを試したことはありませんでした。

4
Alex F

私はあなたのための唯一の解決策はブロックレベルのバックアップだと思います
LVMスナップショット(またはさらに低いレベル dm-snapshots )を使用するスクリプトを記述し、それらをストレージサーバーに転送することができます

Zumastorプロジェクト とその ddsnap ユーティリティもご覧ください。

PS。Solaris/FreeBSDサーバーには、 インクリメンタルスナップショット+ ZFS送信/受信 を使用してこのプロセスを自動化できるZFSがあります。

2
SaveTheRbtz

私はrsyncとrdiff-backupから始めて、多くのバックアップソリューションを試しました。また、純粋なtar-ingおよびbashスクリプト。しかし bacula それらすべてを打ち負かします。これはモジュラー設計に基づいており、バックアップネットワークに約8台のPCがあり、成長しています。

私がバキュラを勧めた人には、彼らはついに彼らの家に満足しました。

2
iElectric

あなたはそれをバックアップしたいものを言わないto;テープまたはディスク?前者を想定して、私はバキュラの推奨事項を支持します。私はいくつかの異なるサイトでそれを使用しています。そのうちの1つでは、60スロットの2ドライブLTO2ロボットを駆動しており、合計で50TBのテープストレージが120本のテープに分散しており、単一の最大サーバーには約4TBのディスクがあります。 。 Baculaは、適切に構成されていれば非常に優れています。

ディスクバックアップ私はしっかりと古いスタイルのテープマンなので、コメントすることはできません。履歴の保持について具体的に言及しているので、リムーバブルメディア(つまりテープ)のバックアップを受け入れていただければ幸いです。

1
MadHatter

BackupPC を試してください。私にとっては、数テラバイトのデータと数千万のファイル(毎日変更されるものの約10万から50万)で非常にうまく機能します。 OK、BackupPC does rsyncを使用し、ファイルベースなので、それはあなたにとって目立たないかもしれません。

Bacula も人気があり、その中で最もクールなスローガンがあります。そしてそれはrsyncさえ使用しません! :-)

0

EMC Networkerには、SnapImageと呼ばれるオプションがあり、データの種類のバックアップ速度を上げる必要があります。

聞いたことがありますが、試したことはありません、ごめんなさい...

0
marcoc

mirrordir を使用してみてください。適切なスクリプトがあれば、それはあなたにとって理想的な解決策のようです。変更(変更、作成、または削除)されたファイルのみを更新しますが、古いファイルを保持する機能もあります。その機能がどのように機能するかはわかりませんが、難しいことではありません。私が使用しているスクリプトは次のとおりです:(わかりやすくするために多少編集しました。編集で問題が発生しなかったことを願っています)

#! /bin/bash

logfile="/home/share/Backup-log.txt"

echo "" | unix2dos >> $logfile
echo `date`"   /bin/mirror_backup started" | unix2dos >> $logfile

echo ""
echo ""
echo "mirror_backup   Automatically archive a list of"
echo "                directories to a storage location"

# Mount mirror drive
mount -o remount,rw /mirror
xstatus=$?
if [ $xstatus -ne 0 ]
then
        mount -o remount,rw /mirror 2>&1 | unix2dos >> $logfile
        echo `date`"   Mount failed, aborting /bin/mirror_backup..." 1>&2
        echo `date`"   Mount failed, aborting /bin/mirror_backup..." | unix2dos >> $logfile
        mount -o remount,ro /mirror 2>> /dev/null
        exit $xstatus
fi

# Define Source Directories
sourcelist="/home /etc /root"
dest="/mirror"

for dir in $sourcelist
do
        if [ ! -d ${dest}${dir} ]
        then
                mkdir -p ${dest}${dir} 2>&1 | unix2dos >> $logfile
#               chown mirror:mirror ${dest}${dir}
        fi
done


# Mirror directories

for dir in $sourcelist
do
        # Delete old files
        echo ""
        echo "Deleting old files in "${dest}${dir}
        mirrordir --Nice 0  --exclude-from /root/exclude-list --only-delete ${dir} ${dest}${dir} 2>> /dev/null

        # Run full mirror
        echo "Mirroring "${dir}" to "${dest}${dir}
        mirrordir --Nice 0 --restore-access --access-times --exclude-from /root/exclude-list ${dir} ${dest}${dir} 2>&1 | unix2dos >> $logfile

done

# Perform miscellaneous tasks

report="/home/share/disk-report.txt"
echo "Report generated on "`date` | unix2dos > $report
echo "" | unix2dos >> $report
echo "RAID drive status:" | unix2dos >> $report
cat /proc/mdstat | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk usage per slice:" | unix2dos >> $report
df -h | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk Usage per User:" | unix2dos >> $report
du -h --max-depth 1 /home | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk Usage on Share drive:" | unix2dos >> $report
du -h --max-depth 1 /home/share | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Filesystem Usage Overview:" | unix2dos >> $report
du -h --max-depth 1 / | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Report Complete" | unix2dos >> $report

echo ""
echo "mirror_backup complete."

# Unmount Mirror Drive
mount -o remount,ro /mirror 2>&1 | unix2dos 2>> $logfile
echo `date`"   /bin/mirror_backup completed successfully" | unix2dos >> $logfile

exit 0

コミットに変更がない場合(たとえば、2回目のランスルー)、1.5 TBのファイルをスキャンするのに約5〜7分かかります。もちろん、最初のランスルーではかなり遅くなります。 。

ちなみに、このスクリプトは、自宅のパーソナルサーバーで使用するために私が作成したものです。誰でも自由に使用または変更することができますが、私は一切の保証を行いません。それは無料なので、あなたはあなたが支払うものを手に入れます。しかし、それが役立つことを願っています!

0
Jesse

rsnapshot

または、より詳細な制御が必要な場合。同じことをするために短いbashスクリプトをハックするだけです:one cp -al、いくつかのmvrsync

私はそれを約500万ファイルの非常に忙しい30TBサーバーで使用し、素晴らしい働きをします。

0
Javier