一.背景

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

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

  1. linux下载文件夹到本地命令行,linux下载文件到本地命令,linux下载文件到本地命令 下载工具...

    linux下载文件到本地命令,linux下载文件到本地命令 下载工具 来源:互联网/编辑:佚名/时间:2020-09-08 在手机上看 扫一扫进入手机端 linux用户命令在哪个文件夹下 用 whic ...

  2. Linux下文件重命名、创建、删除、修改及保存文件

    Linux下文件重命名.创建.删除.修改及保存文件 一.重命名(更名) linux 给文件改名的命令是mv命令 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的 ...

  3. scp命令服务器下载文件到本地,scp命令linux拷贝文件到本地,服务器下载文件,scp命令拷贝文件,scp命令文件下载上传到服务器

    scp命令文件下载上传到服务器 # 服务器拷贝文件到本地 # # scp 服务器路径文件 本地路径文件 scp root@192.168.0.111:/tmp/test.sql D:/share/te ...

  4. linux下载文件到本地

    使用XShell工具 1.首先虚拟机要联网 2.服务器要安装了rz,sz yum install lrzsz 运行rz,会将windows的文件传到linux服务器    运行sz filename, ...

  5. linux另存为,linux下的ssh工具之,本地上传到linux服务器and Linux服务器文件另存为本地。非sftp工具。...

    首先,当你只有一个ssh工具可以连接linux,但你有想把文件在 linux 和windows(本地)直接的切换.其实可以的: 1.将本地的文件,放到ssh远程的linux服务器上: 首先要安装工具包 ...

  6. linux 下载文件到本地

    sz 文件名 即可下载文件(文件夹先压缩成压缩包即可下载) yum -y install lrzsz 解决sz command not found

  7. oracle如何异地备份软件,数据库Oracle数据的异地的自动备份

    数据库Oracle数据的异地的自动备份以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 正在看的ORACLE教程是:数据库 ...

  8. linux命令下载文件到本地

    linux下载文件到本地windows系统,可以用sz命令下载linux文件到本地,也可以用命令rz上传本地文件到linux 使用xshell来操作服务非常方便,传文件也比较方便. 就是使用rz,sz ...

  9. Linux中文件传输、解压缩文件

    第一次在服务器上部署项目文件,谨慎慢又慢,搜了那么多命令也是瞎,直接简单上手得多舒服 1.上传本地文件到linux,linux下载文件到本地命令 1)sz命令发送文件到本地:[ ]# sz filen ...

最新文章

  1. “你行你上”:有本事跟OpenAI Five打一把DOTA?| 极客头条
  2. win8.1配置java环境个人 win8.1
  3. Jar Hell变得轻松–用jHades揭秘classpath
  4. python pyqt5安装_Python3 安装PyQt5及exe打包图文教程
  5. 打卡学习 | Redis原理应用-线程IO模型
  6. shell脚本导出oracle数据库,Shell脚本备份恢复Oracle数据库简单示例
  7. 如何使用Super Vectorizer在 Mac 上将 PDF 转换为 SVG 矢量?
  8. [家里蹲大学数学杂志]第039期高等数学习题集
  9. 计算机桌面运维ppt,桌面运维自动化.ppt
  10. c语言程序设计超市会员卡管理系统,c语言程序设计超市管理系统.doc
  11. I2C中的10bit地址读写
  12. 「硬刚Doris系列」Apache Doris的向量化和Roaring BitMap
  13. 一线城市广州,再次对“双一流”毕业生放宽落户条件
  14. 数字黑洞水仙花数6174卡普耶卡变换,卡布列卡常数归敛
  15. 一般3d模型代做多少钱_3D打印模型一般需要多少钱?
  16. ppt编写方法和指南
  17. 测试代码运行时write to txt格式
  18. vue入门学习(一)
  19. 计算机毕设——中文分词方法研究与实现
  20. 【GitLab和Jira集成】GitLab中集成Jira

热门文章

  1. django用户注册、登录、注销和用户扩展
  2. 【机器学习】机器学习算法模式:区别监督学习、无监督学习、半监督学习、强化学习
  3. Pinyin4j bug
  4. 朴素贝叶斯的三个常用模型:高斯、多项式、伯努利
  5. qsub作业提交命令
  6. 如何写好活动方案?学会5W2H框架分析法。
  7. UG根据翼型数据进行叶片建模
  8. python动态规划--01背包问题
  9. 《有限与无限的游戏》第四章 发生在世界中的有限游戏:经典摘抄
  10. 20170206(计算机网络名词解析)