一.背景
二.依赖功能介绍
1.expect
2.cron
3.Linux的三个时间atime, mtime, ctime
三.本地备份脚本
四.异地备份脚本
五.定期删除备份
六.GitHub脚本地址
1.数据丢失问题时有发生,如果没有备份,情况将变得非常被动,无论是由于病毒还是人为操作导致的程序或数据删除,事后悔恨已无济于事,不如提前做好数据备份,而异地备份则更为安全。
2.数据备份的意义在于,当遭遇网络攻击、入侵、电源故障或操作失误等事故时,能够完整、快速、简便、可靠地恢复原有系统,在一定范围内保障系统正常运行。
作用:expect工具可用于与其他交互式程序进行脚本化交互。
安装命令:yum install expect
参考文档:Linux之expect操作详解
作用:根据配置文件设定的时间执行特定任务。
参考文档:
Linux Crontab 定时任务
cron表达式
作用:定期删除备份时通常根据备份文件的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" <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文件备份成功"
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
查看备份文件与本地日志正确生成
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 -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
运行后查询结果,已实现了无人值守备份的功能
查看异地文件已生成:
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
检查异地文件备份成功:
1.定期删除命令测试:
find /root/backup/ -mtime +180 | xargs rm -rf {} #删除180天前的文件与文件夹的信息
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天前的文件清理成功"
查看文件清理效果如下:
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
GitHub地址
至此,本文关于在Linux上实现定期本地备份、异地备份及删除备份的脚本介绍就到这里了。如需了解更多相关Linux文件定期备份的内容,请搜索我们之前的文章或继续浏览下面的相关文章,期待大家以后多多支持我们!
以上就是Linux实现文件定期本地备份/异地备份/删除备份的脚本的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号