質問: ホームサーバーに最適なlinuxバックアップ方法は何ですか? 現在、rsyncとローカルusbドライブを使用してfedoralinuxサーバーをバックアップしています。これまでのところ、これは私のニーズに合っているようですが、これを実行するためのより良い方法があると思います。以前はテープを使用していましたが、サーバーをバックアップするためのサイズのテープバックアップの価格が、私の価格範囲をはるかに超えています。自動化されたものの方が良いでしょう。現在のrsyncバックアップを自動化できると思いますが、これはusbドライブを常にオンにしておくことを意味します。考え?
回答: 私は 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変数を適切に変更します。