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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章