导航

一.背景
二.依赖功能介绍
三.本地备份脚本
四.异地备份脚本
五.定期删除备份
六.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.html
cron表达式: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/bash
source_folder=/root/test20221009
backup_folder=/root/backup/`date "+%Y-%m-%d"`
source_folder_name=`echo $source_folder |awk -F "/" '{print $3}'`.tar.gz
echo "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_folder
echo "$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-12 set 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_folder expect {
"*yes/no" {send "yes\r";exp_continue}
"*password:" {send "$password\r"}
} expect eof

运行后查询结果,已实现了无人值守备份的功能

查看异地文件已生成:

 3.加入crond定时任务并将输出与错误重定向至文件

crontab -e

设置每天02:00执行一次异地备份任务,(给本地备份充足的时间预留)并将标准输出与标准错误重定向至日志文件

0 1 * * * expect /root/backup/offsite_backup.expect 2>&1 >  /root/backup/offsite_log_$(date +\%Y-\%m-\%d)

修改系统时间,重启crond服务等待定时任务的执行,并查询日志:

date -s "2022-10-10 00:59:50"
service crond restart
tail -5 /var/log/cron

检查异地文件备份成功:

五.定期删除备份

1.定期删除命令测试:

find /root/backup/ -mtime +180 | xargs rm -rf {}  #删除180天前的文件与文件夹的信息

 2.封装shell脚本delete_expire_backupfile.sh,清理的目录与过期时间可配置

#!/bin/bash

#待清除目录
dir=/root/backup/
#文件的过期周期
day_expireDay=10 #删除最终为day_expireDay前的备份文件与文件夹信息
find $dir -mtime +$day_expireDay | xargs rm -rf {}
echo "$dir下的$day_expireDay天前的文件清理成功"

查看文件清理效果如下:

 3.加入crond定时任务并将输出与错误重定向至文件

crontab -e

设置每天00:00执行一次异地备份任务,并将标准输出与标准错误重定向至日志文件

0 0 * * * sh /root/backup/delete_expire_backupfile.sh 2>&1 >  /root/backup/delete_log__$(date +\%Y-\%m-\%d)

修改系统时间,重启crond服务等待定时任务的执行,并查询日志,文件已清理成功

date -s "2022-10-12 23:59:50"
service crond restart
tail -5 /var/log/cron

六.github脚本地址:

https://github.com/bigwhite2020/bigwhite2022/tree/main/本地备份、异地备份、删除备份脚本

liunx文件定期本地备份、异地备份、删除备份脚本的更多相关文章

  1. 使用python备份数据库并删除备份超过一定时长的文件

    #!/usr/bin/env python #-*- coding: utf-8 -*- """ @Project:Py @author:sandu @Email: sa ...

  2. SQL server 2008 Express Edition实现自动备份和自动删除备份

    1.查看SQL 版本: select @@VERSION --可以看到 Express Edition 精简免费版 Microsoft SQL Server 2008 R2 (SP2) - 10.50 ...

  3. 如何删除控制文件中过去rman备份到磁带的备份集

    问题描述: 早上做数据库巡检,发现FRA(flash recovery area)空间使用率达到66%,是平时的两倍.由于库不大,备份策略是本地磁盘备份,每天一全备,REDUNDANCY 1 ,备份完 ...

  4. SQL server 2008定期的备份数据库及删除job

    在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库.要实现数据库的 ...

  5. Sql Server自动备份数据库,定期删除备份

    //实现:每天自动备份数据库,定期删除备份 //步骤:[开始]--[所有程序]--[Microsoft SQL Server 2005]--[SQL Server Management Studio] ...

  6. 使用python备份指定目录并删除备份超过一定时长的文件

    #!/usr/bin/env python #-*- coding: utf-8 -*- """ @Project:Py @author: @Email: @Softwa ...

  7. 七牛云qshell工具定时备份空间文件到本地

    qshell 是利用七牛文档上公开的 API实现的一个方便开发者测试和使用七牛API服务的命令行工具,使用该工具可以实现很多的功能,今天就分享一下利用qshell定时备份空间文件到本地 1.下载qsh ...

  8. mssql server 2005还原数据库bak文件与“备份集中的数据库备份与现有的xx数据库不同”解决方法

    mssql server 2005还原数据库bak文件,网站使用虚拟主机建站会经常遇到,一般情况下,主机商有在线的管理程序,但有时候没有的话,就需要本地还原备份sql数据库了.这种情况mssql se ...

  9. Linux高级运维 第四章 文件的基本管理和XFS文件系统备份恢复

    4.1 Linux系统目录结构和相对/绝对路径 4.1.1系统目录结构 在windows系统中,查看文件先进入相应的盘符,然后进入文件目录 在windows中,它是多根  c:\    d:\   e ...

随机推荐

  1. appache ab测试高并发

    ab使用范例: 要执行 1000 次的 connection, 20 次的 concurrent (并行, 同时): 语法: ab -n 1000 -c 20 http://localhost/ind ...

  2. C#中引用类型的变量做为参数在方法调用时加不加 ref 关键字的不同之处

    ​ 一直以为对于引用类型做为参数在方法调用时加不加 ref 关键字是没有区别的.但是今天一调试踪了一下变量内存情况才发现大有不同. 直接上代码,结论是:以下代码是使用了 ref 关键字的版本.它输出1 ...

  3. CF859E 题解

    分析 我们不妨把这些座位看作是一张图中的节点,把每个人的诉求作为一条边(由[原座位]指向[想去的座位]) 比如,对于样例#1,我们就可以得到这样一张图: 显然,我们有可能会得到多个连通图(比如上面这张 ...

  4. DolphinScheduler 荣获 2021 中国开源云联盟优秀开源项目奖!

    点击上方 蓝字关注我们 好消息,中国开源云联盟(China Open Source Cloud League,简称"COSCL")于近日公布 2021 杰出开源贡献者.优秀开源项目 ...

  5. Reader和Writer区别final.finally.finalize区别

    Reader和Writer是字符操作流,Writer是输出的,而Reader是输入的. 首先找到一个文件,比如:File file=new File("."+File.separa ...

  6. 使用Fiddler劫持网络资源为前端开发助力(示例:Dynamic CRM 表单开发 也能热更新? )

    背景: 使用过vue开发的童鞋应该都知道,在开发vue项目的过程中,有个叫"热更新"的功能特别爽,在传统html开发到初次接触vue时,才发现原来前端开发可以这么香.热更新的表现形 ...

  7. SwiftUI实战教程-土豆List

    代码库 教程中的项目代码都保存在这里:https://gitee.com/KINGWDY_admin/swiftui01 前言 在这一章节中,我们会使用List控件做一个土豆List,实现了列表填充. ...

  8. 你言我语 By Twikoo

    主要做了两件事: 一是前端魔改 二是首页调用(替代原 bber) 注明:以下样式.功能代码基于 Twikoo v1.6.4 前端魔改 "管理面板"按钮同步隐藏输入框.先到twiko ...

  9. KingbaseES 数据库软件卸载

    关键字: KingbaseES.卸载   一.安装后检查 在安装完成后,可以通过以下几种方式进行安装正确性验证: 1. 查看安装日志,确认没有错误记录; 2. 查看开始菜单: 查看应用程序菜单中是否安 ...

  10. Springboot shiro JWT集成总结

    SpringBoot Shiro JWT 1.建表 DDL.sql CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, ` ...