増分バックアップディレクトリ用のシンプルなスクリプト

すべての始まり



「管理者には2種類あります。まだバックアップを行っていない人と、すでにバックアップをしている人です。」

プロジェクトディレクトリでランダムにrm -rf *を実行した後の最初のタイプの管理者であるため、最後のバックアップが約6か月前に作成されたことを知るのは非常に悲しいことです。 このような状況に陥ったとき、情報をバックアップするための単純でリソース集約型ではない手段を探し始めました。

基準:

1)限られたシステムリソース(VPSなど)の条件でオンザフライでバックアップを作成する機能

2)古くなったバックアップをネイティブに削除する機能

3)マウントされたファイルシステムを操作する機能



プロセス



google / Yandexの後、選択はrdiff-backupユーティリティ( オフサイト )で決まりました。

このユーティリティのすべての機能は、例とドキュメントとともにサイトにあります。簡単に言うと、この3つのポイントすべてに対応しています。

ファイルのリポジトリとして、外部ハードのあるホームルーターを使用します( sshfsを使用してサーバーにマウントします)ので、スクリプトで使用します。 さらに、バックアップの結果に関する通知をメールで受け取りたいと思いました-これも提供されています。



結果



#!/ bin / sh



REMOTE_ADDR = 'user @ storage:/ remote_path' #リモートストレージへのパス

MOUNTPOINT = '/ backup_remote' #バックアップパーティションのマウントポイント

BACKUP_DIR = '/ somedir' #バックアップするディレクトリ

MAILFROM = 'root @ server' #レポートの送信元アドレス

MAILTO = 'mail@example.com'# レポートの 送信先 アドレス

EXPIRE = "1W" #増分ファイルが保存される時間



TMP = '/tmp/backup_tmp.tmp'



sshfs $ REMOTE_ADDR $ MOUNTPOINT > / dev / null 2 >& 1



if [ ` mount | grep $ MOUNTPOINT | grep -vc grep ` = " 0 " ] ; それから

echo " ` date + '%d /%m /%Y%H:%M'`での $ MOUNTPOINTのマウントエラー " | mail -a "From: $ MAILFROM " -s "Backup ERROR" $ MAILTO

1 番出口

fi



もし [ -d $ MOUNTPOINT / $ BACKUP_DIR ] ; それから

mkdir -p $ MOUNTPOINT / $ BACKUP_DIR > / dev / null 2 >& 1

fi



printf " $ BACKUP_DIRを処理しています... \ n \ n " >> $ TMP

rdiff-backup --force --exclude-symbolic-links --exclude-sockets --exclude-special-files --exclude-fifos --exclude-device-files --no-hard-links --print-statistics $ BACKUP_DIR $ MOUNTPOINT / $ BACKUP_DIR >> $ TMP 2 >& 1

rdiff-backup --force --no-hard-links --remove-older-than $ EXPIRE $ MOUNTPOINT / $ BACKUP_DIR >> $ TMP 2 >& 1

printf " \ n ----------------------- \ n \ n " >> $ TMP



エラー = " エラー なし"



if [ ` cat $ TMP | grep 'エラー' | grep -v 'エラー0' | grep -cv grep ` = "0" ] ; それから

エラー = 「エラーが検出されました」

fi



$ TMP | mail -a "From: $ MAILFROM " -s "バックアップレポート( $ { ERRORS } )" $ MAILTO

rm -f $ TMP

$ MOUNTPOINTをマウント解除



出口 0



1つのファイル内のスクリプトは、 ここで取得できます



まとめ



スクリプトをクローンに配置すると、カスタマイズ可能なストレージ期間と進行状況レポートを使用して、指定されたディレクトリの増分バックアップを取得します。

最新バージョンからのファイルの復元は、単純なコピーで行うことができます。特定のバージョンに復元するには、rdiff-backupユーティリティを使用します。



使用をお楽しみください!



All Articles