linux实现对上传文件的定时备份、增量备份的方法
作者:魏元子 发布时间:2021-05-27 03:36:49
介绍
如果你们使用的是类似阿里云的OSS存储服务,那么可以使用服务提供的定时备份,这样可以不用考虑在服务器上做文件备份。
实际上想实现基础的备份还是非常简单的,我们平常使用tar、unzip等命令打包文件,在这个基础上编写一个shell脚本,利用linux的crontab功能添加一个定时执行程序,这样就可以简单实现文件备份。但是这种方式在文件量不断增大后还行吗?答案肯定是不行,当文件量不断增加,所占存储空间增大。这种简单的备份方式会让压缩时间过长,占用过多的存储空间。那么怎么解决这一问题呢?我们可以使用增量备份来避免每一次都对所有文件进行备份压缩而带来的时间和空间的问题。
下面介绍一下实现方式(linux系统环境)
在编写脚本之前需要先查看一下服务器上是否有crontab功能
注:在这里要赞一下这个crontab功能,确实十分实用
使用 rpm -qa|grep crontab命令查看是否已安装crontab
上图所示,表明已安装。
如果未安装,则使用yum命令进行安装
yum -y install vixie-cron
yum -y install crontabs
vixie-cron 是 cron 的主程序;
crontabs 是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
如果是内网环境,需要离线安装的可找要离线安装包
1.启动:systemctl start crond.service
2.查看状态:systemctl status crond.service
上图所示,表明crontab已经在运行
下面贴上常用命令
systemctl start crond.service//启动命令
systemctl status crond.service//查看状态
systemctl stop crond.service//关闭命令
systemctl restart crond.service//重启
systemctl enable crond.service//开机运行
有人用的不是systemctl命令,特此贴出service常用命令
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态
创建脚本文件
vim backup.sh
写入脚本命令(注:这个脚本是从网上找的,未找到原出处)
#!/bin/bash
#好的做法
#根据项目不同来重命名该脚本
#例如 amountebak.sh or pandawillsbak.sh
#该脚本最好放在 $bakpp定义的绝对路径部分
#你可以 在$bakpp下找到相应的备份文件
#例如 /usr/backup/amountebak.sh or /usr/backup/pandawillsbak.sh
########## Init Path ########
# 在下面的参数中必须定义的参数有 $bakpp、$project、$projectpp
TAR=/bin/tar
# 存放备份文件的地方,以项目名称区分
bakpp=/data/file_backup/"$project"
# 需要备份的文件夹,文件夹的路径
project=file
projectpp=/data/
# parament for varible
ym=`date +%Y%m`
ymd=`date +%Y%m%d`
# 存储备份文件的子目录,以月份区分,他的上级目录是$bakpp定义的
monthbakpp=$bakpp/$ym
gidpp=$monthbakpp
gidshot=gid$project$ym
# 完全备份的文件名
fullname=$ym
# 增量备份的文件名
incrementalname=$ymd
# Record the location of the log
log=$bakpp/$project.log
############ chk_full #######################
# 检查完全备份是否存在,如果不存在就创建它
#this function check fullbackup file exist or not , if not then create fullbackup now
chk_full()
{
if [ -e "$monthbakpp"/"$project"_"$ym"_full.tar.gz ];then
echo ""$project"_"$ym"_full.tar.gz file exist!! ====`date +%Y-%m-%d-%T` " >>$log
else
tar_full
fi
}
######### chk_incremental ########
# 检查增量备份是否存在
chk_incremental()
{
while [ -e "$monthbakpp"/"$project"_"$incrementalname"_incremental.tar.gz ]
do
incrementalname=`echo "$incrementalname + 0.1" | bc `
done
}
######## tar_incremental #######
# 执行增量备份
tar_incremental()
{
cd $projectpp
echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$incrementalname"_incremental.tar.gz" >> $log
sleep 3
$TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$incrementalname"_incremental.tar.gz $project
echo "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$incrementalname"_incremental.tar.gz" >> $log
}
######## tar_full ###########
tar_full()
{
touch $gidpp/$gidshot
cd $projectpp
echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullname"_full.tar.gz" >> $log
$TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$fullname"_full.tar.gz $project
echo "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullname"_full.tar.gz" >> $log
}
########### backup ##############################
# 总体调用备份,此时会做相应的检查以确保备份前提准备充分
backup()
{
if [ -d $monthbakpp ]; then
chk_full
chk_incremental
tar_incremental
else
mkdir -p $bakpp/$ym
tar_full
fi
}
########### let's begin #############
# 先检查$bakpp是否存在,如果不存在先创建后备份
if [ -d $bakpp ];then
backup
else
mkdir -p $bakpp
backup
fi
#advice you can create a file for put backup file, eg /usr/cctcc
#crontab
#mini hours day month week command
# */5 * * * * /home/mmroot/zbb/aaa.sh
# 0 1 */1 * * /home/mmroot/zbb/aaa.sh
# tar -ztf test.tar.gz 查看备份文件里面的文件
使用wq!命令保存文件
这个脚本文件有三处地方需要注意一下:
#存放备份文件的地方,以项目名称区分
bakpp=/data/file_backup/"$project"
#需要备份的文件夹,文件夹的路径
project=file
projectpp=/data/
上面的三个路径要根据自己具体情况进行更改
添加定时任务:输入命令
crontab -e
任务示例
05 03 * * * cd /data/file_backup/;sh file_backup.sh
然后使用 crontab -l 查看即可。
在备份完成后,可使用命令查看备份文件里面的文件
tar -ztf file.tar.gz //查看备份文件面文件
来源:https://blog.csdn.net/weixin_42683134/article/details/105702285
猜你喜欢
- 今天我们来讨论下Godaddy主机的密码保护文件夹。密码保护让你能够限制Web登陆你的托管账户目录的行为。启用后,用户首次访问受保护的目录里
- 有网友在微博上爆料,发现百度网站上有严重漏洞,不仅可以创建文件夹,还可以上传内容上去。据了解,这个漏洞实际上是由于fckeditor编辑器造
- 百度热门关键词能带来很大的流量,这是大家有目共睹的事情。看看百度指数,如“货架”、“手机”这些词每天的检索量都过千过万。现在SEO教程都是“
- 顾名思义,人肉搜索就是利用现代信息科技,变传统的网络信息搜索为人找人、人问人、 * 、人挤人、人挨人的关系型网络社区活动,变枯燥乏味的查询过
- 作为Internet上的FTP服务器,系统的安全性是非常重要的,这是建立FTP服务器者所考虑的第一个问题。其安全性主要包括以下几个方面:一、
- Windows远程接入服务器允许VPN客户进行身份识别并且透明地连接到内部网络,就像直接连接到网络一样。这能够使用户以安全的方式进行远程工作
- 1、创建 /usr/local/services/zookeeper 文件夹: mkdir -p /usr/local/serv
- 一、测试环境与网络结构本文所使用的测试环境是Redhat Linux 7.2、Apache 1.3.24,公司域名假设是company.co
- 北京9月29日电欧洲联盟28日发出警告,如果官方检测发现iPhone屏幕离奇 * 的原因是产品制造存在缺陷,那么iPhone将被召回。&
- 11月4日消息,针对旗下游戏新作《绿色征途》自封国内首款绿色网游惹争议一事,巨人网络今日发表回应称,绿色网游应重视玩家利益。据悉,巨人网络为
- 上月底,PankRank更新,我的博客小升一格,又重新勾起我对PR的浓厚兴趣。但是大部分的PR查询工具都只是单页面的查询,如何才能获取整个网
- PHPWind论坛程序是PHP常用的论坛程序之一,但是它有个缺点是位置导航(又称面包屑导航)设置的非常不科学。一般网站的位置导航都是:首页&
- Yslow 提高网站加载速度里有这么一条:Used Cookie Free Domains , 大意是浏览器会对作用域内每个加载的对象传递
- 现在网络安全越来越引起人们的重视,我们先来了解一下,什么是网页恶意代码。网页恶意代码(又称网页病毒)是利用网页来进行破坏的病毒,使用一些SC
- 由外国破解小组透露出的最新消息表明,暴雪不久前开始Beta测试的新一代即时战略游戏《星际争霸2》在破解进度上取的重大突破,目前已经可以进入单
- 概述面对无法联网的centos系统,安装rpm软件包是一个比较耗时的工作,尤其是那些包含很多依赖的软件包,如果用rpm命令安装,可以说是一个
- Inside Facebook博客曾发布了一篇名为“我有25万名用户,但是那又怎样呢?”的帖子,其作者提到了一个在Facebook上拥有40
- 前言:从事SEO工作也有两年多时间了,为很多网站出过SEO解决方案,因为喜欢SEOWHY的环境,这次申请达人,决定拿出点实在的东西和大家一起
- 如果要问做什么事是最有吸引力,那就是创建Web应用。毕竟,上次你听到有人称赞某产品的交互设计是什么时候的事了?(除了iPod之外) 它们都很
- 前一段时间XP系统自动打了KB942830和KB942831补丁,后来发现IIS突然就不能启动了,老是处于“停止”状态,而且手动