Linux实现文件定期本地备份/异地备份/删除备份的脚本

news2025/1/22 21:37:56

一.背景

1.总会出出现环境上的数据丢失,在没有备份的情况下会非常的被动,不管是由于病毒还是人为的原因造成的程序、数据被删除,有时候后悔已经来不及,不如提前做到数据的备份,而异地备份也更加的保险一点。

2.数据备份的意义就在于,当受到网络攻击、入侵、电源故障或者操作失误等事故的发生后,可以完整、快速、简捷、可靠地恢复原有系统,在一定的范围内保障系统的正常运行。

二.依赖功能介绍

1.expect

作用:expect工具是一个根据脚本与其他交互式程序进行交互

安装语句:yum install expect

参考文档:Linux之expect操作详解

2.cron

作用:可以根据配置文件约定的时间来执行特定的任务

参考文档:

Linux Crontab 定时任务

cron表达式

3.liunx的三个时间atime,mtime,ctime

作用:定期删除备份时一般备份文件的mtime来进行删除

参考文档:详解Linux中atime,mtime,ctime的使用场景

三.本地备份脚本

1.本地备份命令测试

1

2

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

1

2

3

4

5

6

7

8

9

10

11

12

13

#!/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定时任务列表

1

crontab -e

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

1

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

测试查看任务执行情况:

1

tail -5 /var/log/cron

查看备份文件与本地日志正确生成

四.异地备份脚本

1.异地备份命令测试:

1

scp -C -r /root/backup/2022-10-10/ mrswhite@192.168.37.9:/root/back_up_offsite

提示输入密码后进行备份

查看对端文件备份成功

2.封装expect脚本offsite_backup.expect,当提示输入密码时可自动对应输入密码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

#!/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定时任务并将输出与错误重定向至文件

1

crontab -e

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

1

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

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

1

2

3

date -s "2022-10-10 00:59:50"

service crond restart

tail -5 /var/log/cron

检查异地文件备份成功:

五.定期删除备份

1.定期删除命令测试:

1

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

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

1

2

3

4

5

6

7

8

9

10

#!/bin/bash

#待清除目录

dir=/root/backup/

#文件的过期周期

day_expireDay=10

#删除最终为day_expireDay前的备份文件与文件夹信息

find $dir -mtime +$day_expireDay | xargs rm -rf {}

echo "$dir下的$day_expireDay天前的文件清理成功"

查看文件清理效果如下:

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

1

crontab -e

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

1

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

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

1

2

3

date -s "2022-10-12 23:59:50"

service crond restart

tail -5 /var/log/cron

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Servlet】1:踏入JavaWeb的第一把钥匙

目录 第一章 | JavaWeb序章 | 章节概述 | JavaWeb项目运行流程 | 静态与动态资源 | Javaweb开发人员的三个任务 第二章 | HTTP网络协议 | 章节概述 | HTTP简介 | HTTP请求三要素 | HTTP请求包、响应包 | HTTP状态码 | HTTPS vs HTTP 本文章属于后端全套笔记的第三部…

Jenkins 如何 使用企业权限 登录

实现方式 基于Jenkins的 “CAS Plugin” 和 “Role-based Authorization Strategy”插件实现 CAS Plugin: 该插件支持使用CAS作为身份验证源,以支持单点登录(SSO)。一般的,企业都会有 这么一个服务,提供企业 统一身份管理,比如 百…

【GlobalMapper精品教程】026:影像黑边白边出现的原因及解决办法汇总

本文讲解Globalmapper中,影像黑边白边出现的原因及解决办法汇总。 文章目录 1. 影像黑边白边出现的原因2. 影像黑边白边的解决方法1. 影像黑边白边出现的原因 通常,由于影像格式、像素深度、无效值、背景值等原因,会产生黑边或者白边,给影像的拼接或者裁剪带来困扰。 2. …

基于ERP集成的流程制造管理系统

ERP的含义是企业资源计划,含义是对企业所拥有各种资源进行综合规划和优化管理,用以降低成本,提高效率,增加利润。ERP最初是在90年代初提出的,那时的ERP概念,还只是根据计算机技术的发展和供需链管理,推论各…

什么是GEMM?该怎么去学习GEMM?

什么是GEMM? 它的英文全称是 GEneral Matrix to Matrix Multiplication (通用矩阵的矩阵乘法),Gemm在神经网络的计算中占据很重要的位置。 它代表全局矩阵到矩阵的乘法,它本质上完全按照它在tins上所说的那样,将两个输入矩阵乘法在…

批量替换网站程序中的gotoip域名

网站访问出现验证页面,这是因为网站调用了二级域名,西部数码二级域名用于测试访问效果,不能用于正式访问,但是有些用户网站调试安装时使用了二级域名,内部链接没有修改,所以访问调用出现了验证页面。 这时要检查网站后…

DBCO(二苯并环辛炔)DBCO-PEG16-Benzylamine特点分享

【产品描述】 DBCO-PEG16-Benzylamine固体状,长链小分子PEG点击试剂,DBCO(二苯并环辛炔)是一种环炔烃,可以通过在水溶液中通过应变促进的1,3-偶极环加成反应与叠氮化物反应,这种生物正交反应也称为无铜点击…

前端、vue、Vue3弹幕实现;前端CSS实现弹幕

前端基于CSS3实现弹幕 基于CSS3动画 根据 Google Developer,渲染线程分为 主线程 (main thread) 和 合成线程 (compositor thread)。如果 CSS 动画只是改变 transforms 和 opacity,这时整个 CSS 动画得以在 合成线程 完成(而JS动画则会在 主…

PTA题目 最佳情侣身高差

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)1.09 (男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。 下面就请你写个…

HTTP Only限制XSS盗取cookie

今天继续给大家介绍渗透测试相关知识,本文主要内容是HTTP Only限制XSS盗取cookie。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对…

使用 Helm Cli 将 chart 推送到 Harbor

使用 Helm Cli 将 chart 推送到 Harbor 背景问题 努力寻找适用于特定版本的 Harbor 和 Helm 的文档。 我尝试添加我的仓库(repo) helm repo add harbor https://myharbor.mydomain.com/chartrepo/myproject --username myusername --password mypass…

NXP iMX8M Plus M7核心FreeRTOS开发

By Toradex胡珊逢 Toradex 的 Verdin iMX8M Plus 计算机模块采用 NXP 的 iMX8M Plus 处理器。该 CPU 除了有支持 AI 硬件加速单元的 NPU 外,还配置了一个 M7 微控制器。相比于 iMX 8 QuadMax 处理器上时钟频率为 266MHz 的M4 微控制器, 该M7 的时钟频率…

Java基础39 Object类(节选)

ObjectObject类一、 equals( )● 与 equals的对比(☆)二、hashCode( )三、toString( )四、finalize( )Object类 Object类:Java中lang包的类,是类层次结构的根类,每个类都使用Object作为超类。所有对象(包…

【2015NOIP普及组】T3:求和 试题解析

【15NOIP普及组】求和 时间限制: 1000 ms 内存限制: 131072 KB 【题目描述】 一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n。每个格子上都染了一种颜色colori用[1,m]当中的一个整数表示),并且写了一个数字numberi。 定义一种特殊的三元组:(x,y,z),其中x,…

Java架构该如何进阶?还在东拼西凑的学习?这份进阶指南相信会对你有所帮助,十多位资深大佬独家秘籍一并传授!

如何成为一名架构师? 笔者认为,想成为一名架构师,首先第一点必然是你的技术足够优秀,知识的深度和广度足够,遇到问题能很快从脑海中寻找出最合适的解决之道。其次,架构师会从整体上领导项目,与人打交道必不可少,因此…

区块链baas平台告警方案

前言 在《24*7动态化监管为“链”站岗》中,我们介绍了区块链动态化监控中心,如果说监控的作用是防患于未然,那么告警则是当异常发生时第一时间触发运维人员的关键,可充分降低监控对象异常的时间,最大化降低因异常给区…

深度解析KubeEdge EdgeMesh 高可用架构

摘要:通过高可用特性应用场景、高可用特性使用手册、课题总结、未来展望等四个部分的内容来向大家介绍新版本EdgeMesh的高可用架构。本文分享自华为云社区《KubeEdge EdgeMesh 高可用架构详解|KubeEdge云原生边缘计算社区》,作者:南开大学&am…

【计算机视觉OpenCV基础】实验二 基元检测

实验二 基元检测 计算机视觉OpenCV基础实验合辑(实验1234扩展) 资源下载地址: https://download.csdn.net/download/weixin_53403301 合辑:(加在下载地址后面) /87113581 讲义(包括理论、图例、…

[附源码]SSM计算机毕业设计火车售票系统论文JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

antd table 表格滚动高度适配

文章の目录问题产生背景如何解决写在最后问题产生背景 在开发一个后台管理系统,某一页面用到了table表格,产品的需求是: table表格无论展示多少条数据,表头和分页信息要展示出来 此时我们一定首先想到了table表格的 scroll 属性…