Last active
April 17, 2025 15:41
-
-
Save Akkiesoft/f11280bde15d345bf0ae80a540bc7e1c to your computer and use it in GitHub Desktop.
virtnbdbackupを使用した増分バックアップのシェルスクリプト。日曜日にフル、それ以外は増分でバックアップする。また、1〜2週間でローテーションする。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
BACKUP_VMS=( | |
ここにVMの名前を書く | |
) | |
DEST=/usb-ssd/kvm-backup | |
# 今の曜日 | |
WOD=$(LANG=C date +%a) | |
# 今週日曜日の日付 | |
THISWEEK=$(date --date 'last sunday' +'%Y%m%d') | |
# 今週のディレクトリがなければ作る | |
if [ ! -d $DEST/$THISWEEK ]; then | |
mkdir -p $DEST/$THISWEEK | |
fi | |
if [ "$WOD" == "Sun" ]; then | |
# 日曜日ならフルバックアップ | |
MODE="full" | |
echo "Start full backup." | |
else | |
# 日曜日以外なら増分バックアップ | |
MODE="inc" | |
echo "Start increase backup." | |
fi | |
for VM in "${BACKUP_VMS[@]}"; do | |
echo "Backing up $VM" | |
sudo virtnbdbackup -d $VM -l $MODE -o $DEST/$THISWEEK/$VM | |
# 結果の出力。Slackに投げたり、Zabbixに投げたりしてもヨサゲ | |
RESULT=$(cat `ls -1 $DEST/$THISWEEK/$VM/backup.$MODE.*.log | tail -1` | tail -1 | awk -F': ' '{print $2}') | |
echo "$VM backup result: $RESULT" | |
done | |
# 先週日曜日の日付 | |
#LASTWEEK=$(date --date 'last week sunday' +'%Y%m%d') | |
# 2週間前の日曜日 | |
TWO_WEEKS_AGO=$(date --date '2 week ago sunday' +'%Y%m%d') | |
if [ -d $DEST/$TWO_WEEKS_AGO ] ; then | |
echo "Deleting backups from 2 weeks ago." | |
sudo rm -rf $DEST/${TWO_WEEKS_AGO} | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment