0

0

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

花韻仙語

花韻仙語

发布时间:2025-04-16 18:36:01

|

1077人浏览过

|

来源于php中文网

原创

目录
  • 一.背景

  • 二.依赖功能介绍

  • 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

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

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实现文件定期本地备份/异地备份/删除备份的脚本

查看对端文件备份成功

图可丽批量抠图
图可丽批量抠图

用AI技术提高数据生产力,让美好事物更容易被发现

下载

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文件定期备份的内容,请搜索我们之前的文章或继续浏览下面的相关文章,期待大家以后多多支持我们!

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1343

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

698

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

293

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

771

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

571

2023.07.06

linux删除文件夹的方法
linux删除文件夹的方法

linux删除文件夹的方法:1、使用rm -r命令;2、使用rm -rf命令;3、使用find命令结合rm命令;4、使用图形界面。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

969

2024.02.23

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

544

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

294

2023.07.20

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

10

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 5.9万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号