当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > Linux文件定期备份与删除脚本实战攻略

Linux文件定期备份与删除脚本实战攻略

2025-04-21 22:52:06 0浏览 收藏

本文提供了一套完整的Linux文件定期备份与删除脚本方案,涵盖本地备份、异地备份(利用expect实现自动化密码输入)和过期备份删除三个方面。脚本利用crontab实现定时任务,并对输出和错误信息进行重定向,方便监控。文中详细介绍了脚本的编写过程、使用方法及相关依赖(expect、cron、Linux时间戳),并提供了GitHub脚本地址方便读者下载使用,有效解决数据丢失问题,保障数据安全。 学习本文,您可以轻松掌握Linux系统下的自动化备份和数据管理技术。

目录
  • 一.背景

  • 二.依赖功能介绍

  • 1.expect

  • 2.cron

  • 3.Linux的三个时间atime, mtime, ctime

  • 三.本地备份脚本

  • 四.异地备份脚本

  • 五.定期删除备份

  • 六.GitHub脚本地址

一.背景

1.数据丢失问题时有发生,如果没有备份,情况将变得非常被动,无论是由于病毒还是人为操作导致的程序或数据删除,事后悔恨已无济于事,不如提前做好数据备份,而异地备份则更为安全。

2.数据备份的意义在于,当遭遇网络攻击、入侵、电源故障或操作失误等事故时,能够完整、快速、简便、可靠地恢复原有系统,在一定范围内保障系统正常运行。

二.依赖功能介绍

1.expect

作用:expect工具可用于与其他交互式程序进行脚本化交互。

安装命令:yum install expect

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

2.cron

作用:根据配置文件设定的时间执行特定任务。

参考文档:

Linux Crontab 定时任务

cron表达式

3.Linux的三个时间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

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

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文件备份成功"

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

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

编辑添加crond定时任务列表

crontab -e

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

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

测试查看任务执行情况:

tail -5 /var/log/cron

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

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

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

四.异地备份脚本

1.异地备份命令测试:

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

提示输入密码后进行备份

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

查看对端文件备份成功

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

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

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

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

查看异地文件已生成:

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

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

crontab -e

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

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

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

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

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

检查异地文件备份成功:

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

五.定期删除备份

1.定期删除命令测试:

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

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

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天前的文件清理成功"

查看文件清理效果如下:

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

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

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

六.GitHub脚本地址

GitHub地址

至此,本文关于在Linux上实现定期本地备份、异地备份及删除备份的脚本介绍就到这里了。如需了解更多相关Linux文件定期备份的内容,请搜索我们之前的文章或继续浏览下面的相关文章,期待大家以后多多支持我们!

本篇关于《Linux文件定期备份与删除脚本实战攻略》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于科技周边的相关知识,请关注golang学习网公众号!

Vue.js混合详解与实用技巧Vue.js混合详解与实用技巧
上一篇
Vue.js混合详解与实用技巧
Linux指令大全第三篇:进阶技巧揭秘
下一篇
Linux指令大全第三篇:进阶技巧揭秘
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 笔灵AI生成答辩PPT:高效制作学术与职场PPT的利器
    笔灵AI生成答辩PPT
    探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
    24次使用
  • 知网AIGC检测服务系统:精准识别学术文本中的AI生成内容
    知网AIGC检测服务系统
    知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
    38次使用
  • AIGC检测服务:AIbiye助力确保论文原创性
    AIGC检测-Aibiye
    AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
    37次使用
  • 易笔AI论文平台:快速生成高质量学术论文的利器
    易笔AI论文
    易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
    48次使用
  • 笔启AI论文写作平台:多类型论文生成与多语言支持
    笔启AI论文写作平台
    笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
    41次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码