前言

上一章我详细介绍了上传文件至服务器路径的方法,那么上传完文件就结束了吗?显然没有。

介绍

如果你们使用的是类似阿里云的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 nowchk_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 ]; thenchk_fullchk_incrementaltar_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 //查看备份文件面文件

好了,到此定时备份、增量备份就结束了。

特此说明:更安全的方式是另找一个服务器做文件备份存储服务器。在本机完成定时备份、增量备份后,将文件推送到文件备份存储服务器。这样可以保证在磁盘损坏的情况下达到备份功能

linux实现对上传文件的定时备份、增量备份相关推荐

  1. spring boot配置对上传文件的大小限制

    spring boot配置对上传文件的大小限制 spring-boot 2.0之前 Spring Boot1.4版本后配置更改为(默认单个文件最大1Mb,单次请求文件总数大小最大10Mb): spri ...

  2. layui表单加文件 php_layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例...

    本文实例讲述了layui框架实现文件上传及TP3.2.3对上传文件进行后台处理操作.分享给大家供大家参考,具体如下: layui框架是1.0.9版本.. 首先html页面代码如下: js代码如下: l ...

  3. 宝塔linux上传文件视频,使用宝塔linux面板上传文件 解压缩zip和tar.gz

    塔面板是国内一款免费linux和windows面板,如下面小斌就来解答一下.何使用宝塔linux面板上传文件,宝塔linux如何解压上传的文件. 首先我们登陆宝塔linux面板的管理后台,还没有安装的 ...

  4. linux php文件上传失败,linux不能上传文件

    问题: 无法向Linux主机上传文件. 例如:我们现在想把A文件上传到 /opt/software 目录下,但是此时发现怎么都上传不上去.[isea@redis99 software]$ ll 总用量 ...

  5. 服务器如何接收curl上传文件,linux curl上传文件到服务器

    linux curl上传文件到服务器 内容精选 换一换 为了实现通过NAT Server可使用SSH协议跳转到SAP HANA节点的功能,以及SAP HANA节点和NAT Server互相通过SSH协 ...

  6. linux上传文件上传不了,linux不能上传文件是什么原因

    linux不能上传文件是什么原因 发布时间:2020-04-27 11:43:18 来源:亿速云 阅读:500 作者:小新 今天小编给大家分享的是linux不能上传文件是什么原因,相信很多人都不太了解 ...

  7. linux 安装上传文件,linux常用命令(二)文件上传下载及软件安装

    1.上传下载工具安装 (1)WINDOWS 到linux的文件上传及下载: windows下打开secureCRT,通过SSH连到⾄至远程linux主机: 上传下载工具安装命令:yum -y inst ...

  8. c上传文件到linux服务器,上传文件到Linux服务器

    1. Window上传文件到Linux 1.1 图形化界面winscp 适用于传送文件和目录,但要安装额外的软件winscp 1.2 lrzsz套件 适用于传送文件,使用ssh远程登录管理软件xshe ...

  9. linux用户间文件互传,windows和linux间互传文件

    方法1:Xshell传输文件 用rz,sz命令在xshell传输文件 很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz 首先你的Ubuntu需要安 ...

最新文章

  1. 返回浏览器或div 顶部
  2. NLPIR 分词准确率接近98.23%
  3. mysql报错:This version of MySQL doesn’t yet support ‘LIMIT IN/ALL/ANY/SOME 解决方法
  4. 关闭aslr oracle,地址空间布局随机化 (Address Space Layout Randomization, ASLR)
  5. 前端学习(506):垂直居中的第二种方式
  6. call stack and stack buffer overflow
  7. Asterisk 1.4.42将成绝唱
  8. windows rt c语言,有arm架构的windows平板吗??与x86的win有什么不同?arm写c语言怎样?
  9. 七月算法机器学习 7 工作流程与模型调优 Kaggle案例泰坦尼克号问题
  10. elasticsearch中forcemerge清除文件占用的磁盘空间
  11. zyf sql语句
  12. 青春时代——是路过还是错过
  13. 爬取徐州市自然资源和规划局土地数据
  14. php pandoc,Pandoc 标记语言转化工具
  15. Android 根据sensor重力感应 app横竖屏旋转
  16. 埃拉托色尼筛法(素数筛)
  17. java 距离转坐标_Java经纬读坐标的距离计算
  18. 腾讯QQ发起临时会话
  19. jQuery过滤、遍历同级元素、向上遍历、向下遍历
  20. 阴冷的愚公和唐僧,大师强迫症

热门文章

  1. 20171218Capstone培训班
  2. 2.5趣味数学之猜牌术
  3. c语言实例 魔术师的猜牌术(1),C语言实例:魔术师的猜牌术(2)
  4. 判了!腾讯获赔 475 万!首例“微信自动抢红包”不正当竞争案宣判
  5. nginx处理http请求
  6. is 简写 缩写_天美分析仪器研发中心(TREC)新推出高灵敏度积分球IS-2600
  7. LLMs:自然语言处理领域—大语言模型的涉及四大技术领域(TL/USL/PT+Fine/Seq2Seq)、十大核心组件之详细攻略
  8. 2022-10-15(Linux应急响应、配置漏洞之DNS域传送、内网渗透之内网主机发现技巧)
  9. vue实战之在线翻译项目
  10. 火车售票系统/C语言