



时间:2025-05-16 关注公众号 来源:网络
在数据日益成为企业与个人数字生活核心的今天,确保重要文件的安全与可恢复性变得至关重要。本文将深入探讨如何在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登录后复制
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执行一次备份任务,并将标准输出与标准错误重定向至日志文件
00*sh/root/backup/compressbackup.sh2>&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-fsetdate[clockformat[clockseconds]-format"%Y-%m-%d"]
setusernamemrswhite
sethost192.168.37.9
setpasswordtest20221012
setsource_folder/root/backup
setbackup_folder/root/back_up_offsite
settimeout-1
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登录后复制
运行后查询结果,已实现了无人值守备份的功能
查看异地文件已生成:
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登录后复制
检查异地文件备份成功:
1.定期删除命令测试:
find/root/backup/-mtime+180|xargsrm-rf{}#删除180天前的文件与文件夹的信息登录后复制
2.封装shell脚本delete_expire_backupfile.sh,清理的目录与过期时间可配置
#!/bin/bashdir=/root/backup/
day_expireDay=10
find$dir-mtime+$day_expireDay|xargsrm-rf{} echo"$dir下的$day_expireDay天前的文件清理成功"登录后复制
查看文件清理效果如下:
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登录后复制
GitHub地址
至此,本文关于在Linux上实现定期本地备份、异地备份及删除备份的脚本介绍就到这里了。如需了解更多相关Linux文件定期备份的内容,请搜索我们之前的文章或继续浏览下面的相关文章,期待大家以后多多支持我们!
以上就是Linux实现文件定期本地备份/异地备份/删除备份的脚本的详细内容,更多请关注其它相关文章!
文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站)
电话:13918309914
QQ:1967830372
邮箱:rjfawu@163.com