构建自动化备份与管理策略:全面指南——从本地到异地备份的Linux系统文件保护与优化清理

来源:网络时间:2025-05-16 15:03:46

在数据日益成为企业与个人数字生活核心的今天,确保重要文件的安全与可恢复性变得至关重要。本文将深入探讨如何在Linux环境下,设计并实施一套高效、可靠的自动备份解决方案,该方案不仅涵盖本地数据的定期备份,还包括将这些宝贵数据安全传输至异地存储,以增加数据灾备的层次。同时,我们也会触及一个关键环节——智能备份文件的生命周期管理,即如何适时地删除不再需要的备份,以优化存储资源,避免不必要的空间占用。通过结合使用cron定时任务、rsync同步工具以及简单的脚本编程,我们将展示如何搭建这样一个既安全又高效的备份管理体系,确保在面对数据丢失的风险时,能够迅速恢复,保障业务连续性和个人数据的完整性。

  目录   

一.背景

  

二.依赖功能介绍

  

1.expect

  

2.cron

  

3.Linux的三个时间aTIMe,mtime,ctime

  

三.本地备份脚本

  

四.异地备份脚本

  

五.定期删除备份

  

六.GitHub脚本地址

  一.背景   

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

  

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

  二.依赖功能介绍   1.expect   

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

  

安装命令:yuminstallexpect

  

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

  2.cron   

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

  

参考文档:

  

LinuxCrontab定时任务

  

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执行一次备份任务,并将标准输出与标准错误重定向至日志文件

00*sh/root/backup/compressbackup.sh2>&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

setdate[clockformat[clockseconds]-format"%Y-%m-%d"]

传输用户名

setusernamemrswhite

对端hostIP地址

sethost192.168.37.9

密码

setpasswordtest20221012

设置本地传输路径-前缀

setsource_folder/root/backup

设置兑换传输路径

setbackup_folder/root/back_up_offsite

expect默认timeout为30S超过30s未传输完会停止,设置为-1则不限制超时时间

settimeout-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"}   }

expecteof登录后复制

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

  

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

  

查看异地文件已生成:

  

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

  

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

crontab-e登录后复制登录后复制登录后复制

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

01*expect/root/backup/offsite_backup.expect2>&1>/root/backup/offsitelog$(date+\%Y-\%m-\%d)登录后复制

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

date-s"2022-10-1000:59:50"   servicecrondrestart   tail-5/var/log/cron登录后复制

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

  

检查异地文件备份成功:

  

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

  五.定期删除备份   

1.定期删除命令测试:

find/root/backup/-mtime+180|xargsrm-rf{}#删除180天前的文件与文件夹的信息登录后复制

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

  

2.封装shell脚本delete_expire_backupfile.sh,清理的目录与过期时间可配置

#!/bin/bash

待清除目录

dir=/root/backup/

文件的过期周期

day_expireDay=10

删除最终为day_expireDay前的备份文件与文件夹信息

find$dir-mtime+$day_expireDay|xargsrm-rf{}   echo"$dir下的$day_expireDay天前的文件清理成功"登录后复制

查看文件清理效果如下:

  

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

  

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

crontab-e登录后复制登录后复制登录后复制

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

00*sh/root/backup/delete_expire_backupfile.sh2>&1>/root/backup/delete_log__$(date+\%Y-\%m-\%d)登录后复制

修改系统时间,重启crond服务等待定时任务的执行,并查询日志,文件已清理成功

date-s"2022-10-1223:59:50"   servicecrondrestart   tail-5/var/log/cron登录后复制

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

  六.GitHub脚本地址   

GitHub地址

  

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

以上就是Linux实现文件定期本地备份/异地备份/删除备份的脚本的详细内容,更多请关注其它相关文章!

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:rjfawu@163.com