Centos7 Snapper快照备份

Centos7 Snapper快照备份
必须是btrfs文件系统
yum install -y snapper
创建配置文件:
创建根目录快照配置文件
snapper -c config_name create-config -f btrfs /
也可以直接复制模版:
cp /etc/snapper/config-templates/default /etc/snapper/configs/config_name
创建快照:
snapper快照默认存储在子卷下面的 .snapshots 目录中

创建独立快照,描述为“初始化”
snapper -c config_name create -d "初始化"

创建pre和post快照:
pre 修改前的文件系统快照,每一张前快照都有一个对应的post快照。
snapper -c config_name create -t pre
post修改后的文件系统快照
snapper -c config_name create -t post --pre-num 1

显示快照列表:
snapper -c config_name list
查看快照内容变化:
snapper -c config_name status 1..2
恢复快照:
snapper -c config_name undochange 1..2

删除快照:
snapper -c config_name delete 1 2

开启自动快照:
systemctl start snapper-timeline.timer
systemctl enable snapper-timeline.timer
开启自动清理快照:
systemctl start snapper-cleanup.timer
systemctl enable snapper-cleanup.timer

修改快照自动清理的参数
配置文件位置:/etc/snapper/configs/<配置名称>
字段名 功能

BACKGROUND_COMPARISON="yes" 定义在创建前后快照后是否要在后台对他们进行比较
NUMBER_CLEANUP="yes" 自动删除旧快照
NUMBER_MIN_AGE="1800" 快照自动删除前保留最小时限(秒)
NUMBER_LIMIT="30" 没有标记,保留最新的50个快照
NUMBER_LIMIT_IMPORTANT="10" 标记的,保留最新的10个快照
TIMELINE_CREATE="yes" 每小时创建一个快照
TIMELINE_CLEANUP="yes" 快照超出 TIMELINE_MIN_AGE时限时是否自动删除旧快照
TIMELINE_MIN_AGE="1800" 自动删除保留的最小时限(秒)
TIMELINE_LIMIT_HOURLY="3" 每小时:保留最近创建的十张快照
TIMELINE_LIMIT_DAILY="7" 每天:保留最近十天内每天创建的首张快照
TIMELINE_LIMIT_WEEKLY="0" 每周:保留最近十个月内每月的最后一天创建的首张快照
TIMELINE_LIMIT_MONTHLY="0" 每月:保留最近十个月内每月的最后一天创建的首张快照
TIMELINE_LIMIT_YEARLY="0" 每年:保留最后十年内每年的最后一天创建的首张快照

EMPTY_PRE_POST_CLEANUP="yes" 系统删除前后快照相同的快照对
EMPTY_PRE_POST_MIN_AGE="1800" 定义前后快照相同的快照对在自动删除之前必须保留的最短时限(以秒为单位)

通过脚本备份还原快照:
snapperlist.sh list # 显示所有快照
snapperlist.sh create # 创建快照,输入快照名称
snapperlist.sh restart # 重启快照、清理服务
snapperlist.sh status # 查询快照副本之间差异
snapperlist.sh delete # 删除快照,可以多个删除
snapperlist.sh undochange # 恢复最近一次快照
snapperlist.sh help # 帮助信息

sanpperlist.sh
#!/bin/bash
case "$1" in
list)
snapper -c config_name list
;;
create)
read -p "输入快照名称:" name
snapper -c config_name create -d $name
;;
restart)
systemctl stop snapper-timeline.timer
systemctl start snapper-timeline.timer
systemctl start snapper-cleanup.timer
systemctl enable snapper-cleanup.timer
echo "重启快照、清理服务..."
;;
status)
snapper -c config_name list|awk -F‘|‘ ‘{print $2,$7}‘
read -p "输入查询快照编号: (格式1..2)" num
snapper -c config_name status $num
;;
delete)
snapper -c config_name list|awk -F‘|‘ ‘{print $2,$7}‘
read -p "输入删除快照编号:(格式1 2 3)" num
snapper -c config_name delete $num
;;
undochange)
snapper -c config_name create -d "tmp"
num1=snapper -c config_name list|tail -2|awk ‘{print $3}‘|head -1
num2=snapper -c config_name list|tail -1|awk ‘{print $3}‘
str1=snapper -c config_name list|tail -2|awk ‘{print $17‘}|head -1
str2=snapper -c config_name list|tail -1|awk ‘{print $17}‘
echo "[$num1 $str1] [$num2 $str2]"
if [ $str2 == tmp ];
then
read -n1 -p "是否恢复$str1快照[Y/N]?" answer
case $answer in
Y | y)
snapper -c config_name undochange "$num1".."$num2"
snapper -c config_name delete "$num2"
;;
N | n)
echo "取消"
snapper -c config_name delete "$num2"
exit 0
;;
)
echo "输入错误!"
;;
esac
exit 0
fi
;;
help)
snapper --help
;;
)
echo "{list|restart|status|delete|undochange|help}"
esac

Centos7 Snapper快照备份

上一篇:python中的小技巧


下一篇:C++中的explicitkeyword