バックアップ保存ベースディレクトリ | /disk2 |
世代数 | 5 |
世代ファイル保存ディレクトリ | backup.0(最新) backup.1(1日前) backup.2(2日前) backup.3(3日前) backup.4(4日前) |
# cd /etc/yum.repos.d
# wget http://ftp.mondorescue.org/centos/8/x86_64/mondorescue.repo
# vi mondorescue.repo
[mondorescue]
name=centos 8 x86_64 - mondorescue Vanilla Packages
baseurl=ftp://ftp.mondorescue.org//centos/8/x86_64
#enabled=1
enabled=0
gpgcheck=1
gpgkey=ftp://ftp.mondorescue.org//centos/8/x86_64/mondorescue.pubkey
# dnf --enablerepo=mondorescue install mondo expect
mondoarchive -O | バックアップの実行 |
mondoarchive -V | バックアップデータの検証 |
-i | バックアップデータをISOイメージで出力。 |
-[0-9] | 圧縮レベル。デフォルト「-3」、「-0」は無圧縮。 |
-s (サイズ) | CD/DVD、ISOの最大サイズ。 |
-N | ローカルディスクのみバックアップの対象とする。NFSなどは除外する。 |
-E "Path" | 指定したパスをバックアップ対象から除外。 |
-d (Path) | 指定したパスにバックアップイメージを出力。 |
-p (prefix) | バックアップファイルの先頭に付く名称。 【例】(prefix)-1.iso |
-D | 差分バックアップを実行。 |
# /usr/sbin/mondoarchive -Oi -9 -s 4480m -N -V -E "/disk2" -d /disk2/backup.0 -p "backup_$(date '+%Y%m%d')"
バックアップディレクトリ | /disk2/snapshot/backup.0 |
世代数 | 5(ディスク容量によって世代数を増減して下さい。) |
世代管理バックアップ | /disk2/snapshot/backup.1 /disk2/snapshot/backup.2 /disk2/snapshot/backup.3 /disk2/snapshot/backup.4 |
バックアップ除外ディレクトリ | /dis2 |
# vi /root/backup_snapshot.sh
#!/bin/bash
#----- backup file save base directory -----
BACKUP_BASE_DIR=/disk2/snapshot
BACKUP_MAX_COUNT=5
BACKUP_FILE_PREFIX="backup_$(date '+%Y%m%d')"
EXCLUDED_DIR=/disk2
#-------------------------------------------
# Backup Directory
# /disk2/snapshot/backup.0 (Current data)
# /disk2/snapshot/backup.1 (Previous data)
# /disk2/snapshot/backup.2 (Two previous data)
# /disk2/snapshot/backup.3 (Three previous data)
# /disk2/snapshot/backup.4 (Four previous data)
#-------------------------------------------
cd $BACKUP_BASE_DIR
#----- backup file shift directory -----
RESULT=`find backup.$(($BACKUP_MAX_COUNT - 1))/*.* 2>/dev/null`
# In case of unexpected error
if [ $? -ne 0 ]; then
:
# If the file does not exist
elif [ -z "$RESULT" ]; then
:
# If the file exists
else
rm -f backup.$(($BACKUP_MAX_COUNT - 1))/*.*
fi
for (( i=$BACKUP_MAX_COUNT - 2; i>=0; i-- ))
do
PATH1=$BACKUP_BASE_DIR/backup.$i
RESULT=`find $PATH1/*.* 2>/dev/null`
# In case of unexpected error
if [ $? -ne 0 ]; then
:
# If the file does not exist
elif [ -z "$RESULT" ]; then
:
# If the file exists
else
PATH2=$BACKUP_BASE_DIR/backup.$(($i + 1))
mv $PATH1/*.* $PATH2
fi
done
/usr/bin/sleep 5
/usr/sbin/mondoarchive -Oi -9 -s 4480m -N -V -E "$EXCLUDED_DIR" -d $BACKUP_BASE_DIR/backup.0 -p $BACKUP_FILE_PREFIX
# crontab -e
0 0 * * * /bin/bash /root/backup_snapshot.sh 2>/dev/null