現在、rsync
とローカルUSBドライブを使用してFedoraLinuxサーバーをバックアップしています。これまでのところ、これは私のニーズに合っているようですが、これを実行するためのより良い方法があると思います。以前はテープを使用していましたが、サーバーをバックアップするためのサイズのテープバックアップの価格が、私の価格範囲をはるかに超えています。自動化されたものの方が良いでしょう。現在のrsync
バックアップを自動化できると思いますが、これはUSBドライブを常にオンにしておくことを意味します。
考え?
私が使用する解決策は、家で小さなファンレスサーバーをホストすることを気にしない友人を見つけるためです。次に、データをリモートの場所に同期するために一晩実行される自動化されたrsyncスクリプトがあります。
サーバーを duplicity でAmazonS3にバックアップします。私は四半期ごとに完全バックアップを行い、毎晩増分バックアップを行います。非常にうまく機能します。
私は rsnapshot を使用します。これは、rsyncを使用し、増分/完全バックアップを非常にうまく実行します。
Cronジョブから実行してディスクをマウントし、rsnapshotを実行してからディスクをアンマウントするシェルスクリプトを作成したので、常にマウントされるわけではありません。
これが私が使用するスクリプトです。 1つ目は/usr/local/sbin/backup.shです。これは基本的に、実際の作業を実行し、出力と終了ステータスをキャプチャして、結果をルートに電子メールで送信するスクリプトのラッパーです。
#!/bin/sh
#
# Run the dobackup script, capturing the output and then mail it to the
# backup alias person with the right subject line.
#
BACKUP_TYPE=daily
if [ "a$1" != "a" ] ; then
BACKUP_TYPE=$1
fi
/usr/local/sbin/dobackup.sh ${BACKUP_TYPE} < /dev/null > /tmp/backup.txt 2>&1
RET=$?
SUBJECT="${BACKUP_TYPE} backup for $(hostname) (ERRORS)"
if [ "a$RET" = "a0" ] ; then
SUBJECT="${BACKUP_TYPE} backup for $(hostname) (successful)"
Elif [ "a$RET" = "a2" ] ; then
SUBJECT="${BACKUP_TYPE} backup for $(hostname) (WARNINGS)"
fi
mail -s "$SUBJECT" root < /tmp/backup.txt
exit $RET
そして、これが/usr/local/sbin/dobackup.shで、これが本当の主力製品です。
#!/bin/sh
#
# Perform the backup, returning the following return codes:
#
# 0 - backup successful
# 1 - errors
# 2 - backup successful, but with warnings.
#
if [ -e /dev/sdb1 ] ; then
BACKUP_DEV=/dev/sdb1
else
echo "No backup device available."
echo "CANNOT CONTINUE WITH BACKUP."
exit 1
fi
BACKUP_DIR=/mnt/backup
BACKUP_TYPE=daily
if [ "a$1" != "a" ] ; then
BACKUP_TYPE=$1
fi
echo "Performing ${BACKUP_TYPE} backup."
umount $BACKUP_DEV 2> /dev/null
mount $BACKUP_DEV $BACKUP_DIR
if [ "a$?" != "a0" ] ; then
echo "Error occurred trying to mount the external drive with the following command:"
echo " mount $BACKUP_DEV $BACKUP_DIR"
echo "CANNOT CONTINUE WITH BACKUP."
exit 1
fi
date
rsnapshot $BACKUP_TYPE
RET=$?
date
if [ "a$RET" = "a0" ] ; then
echo "Snapshot performed successfully."
Elif [ "a$RET" = "a2" ] ; then
echo "Snapshot performed, but with warnings."
else
echo "Snapshot had errors (returned ${RET})."
fi
umount $BACKUP_DIR
if [ "a$?" != "a0" ] ; then
echo "Error occurred trying to unmount the external drive with the following command:"
echo " umount $BACKUP_DIR"
exit 1
fi
exit $RET
BACKUP_DEV
変数とBACKUP_DIR
変数を適切に変更します。
私は dirvish を使用してUSBドライブにバックアップを作成します。アクティブなドライブをマウントするためにいくつかのスクリプトを作成しました。ファイルシステムの正しいポイントに3つあり、バックアップを実行します。
Dirvishは基本的に、多くのオプションを使用してrsyncを呼び出すPerlスクリプトです。
ほとんどの答え この質問で ここでも当てはまります。上記のツールのほとんどは、Linuxで正常に動作します。
rdiff-backup を見てください。 USBドライブをそのままにしておくことは害にはなりません。少なくともそれは安価です。彼らはアイドル状態のときに多くの電力を使用しません。
他の回答が示唆しているように、rsync(および/またはrsyncのラッパー)を使用することは、Linuxサーバーのバックアップを作成する簡単な方法です。覚えておくべきいくつかの事柄:
--delete
オプションを指定してrsyncを使用している場合は、削除するつもりのないファイルを回復できない可能性があります。2番目のローカルディスクは、プライマリディスクに障害が発生した場合にファイルをすばやく回復するための最も安価なオプションですが、家が落雷した場合(または安価な電源タップが溶けた場合)は役に立ちません。月額5ドルのオフサイトバックアップソリューションが非常に多いため、両方を実行することは悪い考えではありません。