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

花韻仙語
发布: 2025-04-16 18:36:01
原创
949人浏览过
目录
  • 一.背景

  • 二.依赖功能介绍

  • 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"
<h1>新建立文件夹</h1><p>mkdir -p /root/backup/date "+%Y-%m-%d"</p><h1>压缩命令</h1><p>tar -zcvPf $backup_folder/$source_folder_name  $source_folder
echo "$source_folder_name文件备份成功"
登录后复制

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

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

编辑添加crond定时任务列表

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

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

0 0 <em> </em> * sh /root/backup/compress<em>backup.sh 2>&1 > /root/backup/log</em>$(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</p><h1>获取当前日期 例如:2022-10-12</h1><p>set date [ clock format [ clock seconds ] -format "%Y-%m-%d" ]</p><h1>传输用户名</h1><p>set username mrswhite</p><h1>对端hostIP地址</h1><p>set host 192.168.37.9</p><h1>密码</h1><p>set password test20221012</p><h1>设置本地传输路径-前缀</h1><p>set source_folder /root/backup</p><h1>设置兑换传输路径</h1><p>set backup_folder /root/back_up_offsite</p><h1>expect默认timeout为30S  超过30s未传输完会停止,设置为 -1 则不限制超时时间</h1><p>set timeout -1</p><h1>压缩  递归   本地绝对路径           用户名   目标IP   目标路径</h1><p>spawn  /usr/bin/scp  -C   -r    $source_folder/$date/   $username@$host:$backup_folder</p><p>expect  {
"<em>yes/no" {send "yes\r";exp_continue}
"</em>password:" {send "$password\r"}
}</p><p>expect eof
登录后复制

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

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

查看异地文件已生成:

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

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

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

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

0 1 <em> </em> * expect /root/backup/offsite_backup.expect 2>&1 >  /root/backup/offsite<em>log</em>$(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</p><h1>待清除目录</h1><p>dir=/root/backup/</p><h1>文件的过期周期</h1><p>day_expireDay=10</p><h1>删除最终为day_expireDay前的备份文件与文件夹信息</h1><p>find $dir -mtime +$day_expireDay | xargs rm -rf {}
echo "$dir下的$day_expireDay天前的文件清理成功"
登录后复制

查看文件清理效果如下:

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

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

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

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

0 0 <em> </em> * 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实现文件定期本地备份/异地备份/删除备份的脚本的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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