导航
一.背景二.依赖功能介绍三.本地备份脚本四.异地备份脚本五.定期删除备份六.github脚本地址
- - - - - - - - - - 分割线 - - - - - - - - - -
一.背景1.总会出出现环境上的数据丢失 , 在没有备份的情况下会非常的被动 , 不管是由于病毒还是人为的原因造成的程序、数据被删除 , 有时候后悔已经来不及 , 不如提前做到数据的备份 , 而异地备份也更加的保险一点 。2.数据备份的意义就在于 , 当受到网络攻击、入侵、电源故障或者操作失误等事故的发生后 , 可以完整、快速、简捷、可靠地恢复原有系统 , 在一定的范围内保障系统的正常运行 。
二.依赖功能介绍1.expect作用:expect工具是一个根据脚本与其他交互式程序进行交互安装语句:yum install expect参考文档:https://www.cnblogs.com/mrwhite2020/p/16769739.html
2.cron作用:可以根据配置文件约定的时间来执行特定的任务参考文档:Linux Crontab 定时任务:https://www.cnblogs.com/mrwhite2020/p/15313228.htmlcron表达式:https://www.cnblogs.com/mrwhite2020/p/15195550.html
3.liunx的三个时间atime,mtime,ctime作用:定期删除备份时一般备份文件的mtime来进行删除参考文档:https://www.cnblogs.com/mrwhite2020/p/16754506.html
三.本地备份脚本1.本地备份命令测试
mkdir -p /root/backup/`date "+%Y-%m-%d"`tar -zcvPf /root/backup/`date "+%Y-%m-%d"`/test20221009.tar.gz /root/test20221009
文章插图
2.封装shell脚本:compress_backup.sh
#!/bin/bashsource_folder=/root/test20221009backup_folder=/root/backup/`date "+%Y-%m-%d"`source_folder_name=`echo $source_folder |awk -F "/" '{print $3}'`.tar.gzecho "source_folder:$source_folder"echo "backup_folder: $backup_folder"echo "source_folder_name: $source_folder_name"#新建立文件夹mkdir -p /root/backup/`date "+%Y-%m-%d"`#压缩命令tar -zcvPf $backup_folder/$source_folder_name $source_folderecho "$source_folder_name文件备份成功"
文章插图
3.加入crond定时任务并将输出与错误重定向至文件
编辑添加crond定时任务列表
crontab -e设置每天00:00执行一次备份任务 , 并将标准输出与标准错误重定向至日志文件
0 0 * * * sh /root/backup/compress_backup.sh 2>&1 > /root/backup/log_$(date +\%Y-\%m-\%d)测试查看任务执行情况:
tail -5 /var/log/cron
文章插图
查看备份文件与本地日志正确生成
文章插图
四.异地备份脚本
1.异地备份命令测试:
scp -C -r /root/backup/2022-10-10/ mrswhite@192.168.37.9:/root/back_up_offsite提示输入密码后进行备份
文章插图
查看对端文件备份成功
文章插图
2.封装expect脚本offsite_backup.expect , 当提示输入密码时可自动对应输入密码
#!/usr/bin/expect -f# 获取当前日期 例如:2022-10-12set date [ clock format [ clock seconds ] -format "%Y-%m-%d" ]# 传输用户名set username mrswhite# 对端hostIP地址set host 192.168.37.9# 密码set password test20221012#设置本地传输路径-前缀set source_folder /root/backup#设置兑换传输路径set backup_folder /root/back_up_offsite# expect默认timeout为30S 超过30s未传输完会停止 , 设置为 -1 则不限制超时时间set timeout -1# 压缩 递归 本地绝对路径 用户名 目标IP 目标路径 spawn /usr/bin/scp -C -r $source_folder/$date/ $username@$host:$backup_folderexpect {"*yes/no" {send "yes\r";exp_continue}"*password:" {send "$password\r"}}expect eof
经验总结扩展阅读
- 图片恢复 微信DAT文件转JPG图片
- 二 SpringBoot - 核心配置文件
- 微信电脑版DAT文件转图片工具
- 如何免费去水印文件(最新去水印的方法)
- JuiceFS 元数据引擎选型指南
- gitee仓库上传文件的步骤
- 三十七 Java开发学习----SpringBoot多环境配置及配置文件分类
- 咋清理手机文件管理
- 微信文件如何放大字体(微信金色字体)
- liunx之expect简介