

liunx文件定期本地备份、异地备份、删除备份脚本 - Mrwhite86
source link: https://www.cnblogs.com/mrwhite2020/p/16769781.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

liunx文件定期本地备份、异地备份、删除备份脚本
一.背景
二.依赖功能介绍
三.本地备份脚本
四.异地备份脚本
五.定期删除备份
六.github脚本地址
- - - - - - - - - - 分割线 - - - - - - - - - -
一.背景
1.总会出出现环境上的数据丢失,在没有备份的情况下会非常的被动,不管是由于病毒还是人为的原因造成的程序、数据被删除,有时候后悔已经来不及,不如提前做到数据的备份,而异地备份也更加的保险一点。
2.数据备份的意义就在于,当受到网络攻击、入侵、电源故障或者操作失误等事故的发生后,可以完整、快速、简捷、可靠地恢复原有系统,在一定的范围内保障系统的正常运行。
二.依赖功能介绍
1.expect
作用:expect工具是一个根据脚本与其他交互式程序进行交互
安装语句:yum install expect
参考文档:https://www.cnblogs.com/mrwhite2020/p/16769739.html
2.cron
作用:可以根据配置文件约定的时间来执行特定的任务
参考文档:
Linux Crontab 定时任务:https://www.cnblogs.com/mrwhite2020/p/15313228.html
cron表达式:https://www.cnblogs.com/mrwhite2020/p/15195550.html
3.liunx的三个时间atime,mtime,ctime
作用:定期删除备份时一般备份文件的mtime来进行删除
参考文档:https://www.cnblogs.com/mrwhite2020/p/16754506.html
三.本地备份脚本
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执行一次备份任务,并将标准输出与标准错误重定向至日志文件
0 0 * * * sh /root/backup/compress_backup.sh 2>&1 > /root/backup/log_$(date +\%Y-\%m-\%d)
测试查看任务执行情况:
tail -5 /var/log/cron

查看备份文件与本地日志正确生成

四.异地备份脚本
1.异地备份命令测试:
scp -C -r /root/backup/2022-10-10/ [email protected]:/root/back_up_offsite
提示输入密码后进行备份
查看对端文件备份成功

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
运行后查询结果,已实现了无人值守备份的功能
查看异地文件已生成:
3.加入crond定时任务并将输出与错误重定向至文件
crontab -e
设置每天02:00执行一次异地备份任务,(给本地备份充足的时间预留)并将标准输出与标准错误重定向至日志文件
0 1 * * * expect /root/backup/offsite_backup.expect 2>&1 > /root/backup/offsite_log_$(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 #待清除目录 dir=/root/backup/ #文件的过期周期 day_expireDay=10 #删除最终为day_expireDay前的备份文件与文件夹信息 find $dir -mtime +$day_expireDay | xargs rm -rf {}
echo "$dir下的$day_expireDay天前的文件清理成功"
查看文件清理效果如下:

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

六.github脚本地址:
https://github.com/bigwhite2020/bigwhite2022/tree/main/本地备份、异地备份、删除备份脚本
Recommend
-
55
转载请注明文章出处: https://tlanyan.me/use-rsync-backup-files/ rsync 是主机间同步和备份的神器。相对于 ftp 、 scp...
-
6
定期数据备份的重要性与备份方法 阅读时间 5 分钟,快速阅读仅需 2 分钟。数据备份是很重要的,为什么要备份数据呢?最主要的原因:尽可能地减少损失,包括时间上、精神上和金钱上...
-
6
使用 rsync 异地备份服务器数据 Published on May 31, 2020 in Daily with 2 comments ...
-
14
VeeamBackup Replication 从备份中提取文件恢复到本地
-
7
使用backup异地备份edX数据 2015-06-04 edx ...
-
9
WPS文件被锁当事人:本地文件未被删除,WPS曾承认审核系统错判
-
8
WPS被曝会删除用户本地文件!官方回应:纯属误导 新酷产品第一时间免费试玩,还有众多优质...
-
4
金山办公回应:WPS删除用户本地文件是讹传 李少婷 杨卉 2022年07月12日 09:07 7月11日,有网友在社交媒体爆料称,“WPS似乎有某种敏...
-
13
每天自动删除过期备份 首先编写一个简单的Shell脚本DeleteExpireBackup.sh: #!/bin/bash # 修改需要删除的路径 location="/database/backup/" # 删除最后修改时间为30天以前的备份文件夹 find $l...
-
12
V2EX › NAS NAS 上的文件有便宜且方便的异地备份方案吗?
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK