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

 更新时间:2022年10月13日 09:17:37   作者:Mrwhite86  
数据备份的意义就在于,当受到网络攻击、入侵、电源故障或者操作失误等事故的发生后,可以完整、快速、简捷、可靠地恢复原有系统。本文为大家准备了文件定期本地备份/异地备份/删除备份的脚本,希望对你们有所帮助

一.背景

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.本地备份命令测试

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脚本地址

github地址

到此这篇关于Linux实现文件定期本地备份/异地备份/删除备份的脚本的文章就介绍到这了,更多相关Linux文件定期备份内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux下.tar.xz文件的解压教程详解

    Linux下.tar.xz文件的解压教程详解

    xz这个压缩可能很多都很陌生,不过您可知道xz是绝大数linux默认就带的一个压缩工具。接下来通过本文给大家分享Linux下.tar.xz文件的解压教程详解,需要的朋友参考下吧
    2017-10-10
  • shell脚本根据进程查找指定容器的方法

    shell脚本根据进程查找指定容器的方法

    这篇文章主要介绍了shell脚本根据进程查找指定容器的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Bash Shell 注释多行的几种方法

    Bash Shell 注释多行的几种方法

    这篇文章主要介绍了Bash Shell注释多行的几种方法,需要的朋友可以参考下
    2014-12-12
  • a10 config backup for aXAPI

    a10 config backup for aXAPI

    这篇文章主要介绍了Vincent yu 写的一个a10 config backup for aXAPI version: 2.1 ,需要的朋友可以参考下
    2014-09-09
  • linux patch 命令小结(收藏)

    linux patch 命令小结(收藏)

    说到patch命令,就不得不提到diff命令,也就是制作patch的必要工具。这篇文章主要介绍了linux patch 命令小结,需要的朋友可以参考下
    2017-02-02
  • shell中[]与[[]]的区别小结

    shell中[]与[[]]的区别小结

    多数情况下[]和[[]]是可以通用的,但是也是有区别的,本文就来介绍一下shell中[]与[[]]的区别,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Linux batch命令详解(在系统不繁忙的时候执行定时任务)

    Linux batch命令详解(在系统不繁忙的时候执行定时任务)

    batch命令 用于在指定时间,当系统不繁忙时执行任务,用法与at相似,这篇文章主要介绍了Linux batch命令(在系统不繁忙的时候执行定时任务),需要的朋友可以参考下
    2024-02-02
  • Linux 下使用shell脚本定时维护数据库的案例

    Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • linux批量备份服务器配置文件和目录的脚本

    linux批量备份服务器配置文件和目录的脚本

    这篇文章主要介绍了linux下批量备份服务器配置文件和目录的方法,需要的朋友可以参考下
    2013-08-08
  • 监控php-fpm并自动重启服务的shell脚本

    监控php-fpm并自动重启服务的shell脚本

    这篇文章主要介绍了监控php-fpm并自动重启服务的shell脚本,脚本的主要功能:不断检查网站的状态,如果异常就重启php-fpm服务,需要的朋友可以参考下
    2014-05-05

最新评论