Linux实现文件定期本地备份/异地备份/删除备份的脚本
创始人
2024-02-07 10:10:35

一.背景

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

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...