回答:
重要な機能に関する限り、仕事に適したツールを使用する必要があります。
データセットが小さく、単一のボリュームに収まる場合は、rsnapshotまたはrdiff-backupを使用します。どちらも増分バックアップを提供し、スペース効率が非常に高く、非常に使いやすいです。
私がBaculaを使用するオフラインコンポーネントを持つ大規模またはより洗練されたバックアップの場合、適切にセットアップするのに時間がかかりますが、非常に安定しており、多くの機能を備えています。webaculaのようなWebインターフェースと結合することをお勧めします。
1つの良いアイデアは、私が持っているすべてのサーバーに対して、/ var / backups /に/ etcの毎日の増分バックアップを保持するためにrdiff-backupを使用します。構成ファイルへの最後の変更が大混乱を引き起こす理由。
私は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
rsync
ます。
Rackspaceクラウドファイルストレージでjunglediskを使用します。それはただ毎晩行って、そのことをします、私は何をバックアップするかをそれだけに伝えます、そして、それはリビジョン(種類の)さえ保持します。オフサイトで、かなり安価です。
すべてのホストでbackuppcを使用しています。rsync
受信側で実際に大量のRAMを使用したため、500GBのmaildirストアのみが問題でした。そのホストに対してtarおよびタイムスタンプベースの増分を使用するように切り替えました。
BackupExecの自由と、RALUS * NIXエージェント。簡単にエクスポートでき、SAMBAを必要とせず、エージェントによってもバックアップされるWindowsサーバーに適合します。
ディスクベースのシステム(テープ、オフサイト、または他のシステムではなく)を探している場合は、BackupPCを調べることをお勧めします。私たちはそれについて良い経験をしました。ファイルをプールしてディスク領域を有効に活用するのは良い仕事のようです。それは非常に設定可能で、私たちにとって堅実です。
私は私たちの店で現在使用しているBaculaをお勧めします。また、ウィンドウが必要な場合は、ウィンドウでも機能します。:)
別の提案はアマンダかもしれませんが、私はそれを使用したことがありませんが、2つはしばしば互いに比較されます。
Baculaは、ユーザー(またはシステム管理者)がさまざまな種類のコンピューターのネットワーク全体でコンピューターデータのバックアップ、回復、および検証を管理できるコンピュータープログラムのセットです。技術的には、ネットワーククライアント/サーバーベースのバックアッププログラムです。Baculaは比較的使いやすく効率的である一方、多くの高度なストレージ管理機能を提供し、紛失または破損したファイルを簡単に見つけて回復できるようにします。そのモジュラー設計により、Baculaは小さな単一のコンピューターシステムから大規模なネットワーク上にある数百台のコンピューターで構成されるシステムまで拡張可能です。
私は、backupninja wrapper bashスクリプトの幸せなユーザーです。debianでは標準リポジトリのパッケージとして利用可能です。
データのタイプに応じて、Andrew Cholakianが言及したrdiff-backupを直接使用するか、最初にLVMボリューム[tinkertimが言及]のスナップショットを作成してから、rdiff-backupを実行します。
rdiff-backupは、不良ネットワークリンクでは非常に効率的に機能しません。そのような場合、rdiff-backupをローカルで実行し、rsyncを使用してバックアップリポジトリをリモートサーバーと同期します。
どこにバックアップしますか?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
だれもDuplicityに言及していないとは信じられない。あまりお勧めできません。FTPからssh、S3までの複数のバックエンドがあり、暗号化(gpg)と増分バックアップを行います。復元プロセスは非常に簡単です。