linux实现对上传文件的定时备份、增量备份的方法
介绍
如果你们使用的是类似阿里云的OSS存储服务,那么可以使用服务提供的定时备份,这样可以不用考虑在服务器上做文件备份。
实际上想实现基础的备份还是非常简单的,我们平常使用tar、unzip等命令打包文件,在这个基础上编写一个shell脚本,利用linux的crontab功能添加一个定时执行程序,这样就可以简单实现文件备份。但是这种方式在文件量不断增大后还行吗?答案肯定是不行,当文件量不断增加,所占存储空间增大。这种简单的备份方式会让压缩时间过长,占用过多的存储空间。那么怎么解决这一问题呢?我们可以使用增量备份来避免每一次都对所有文件进行备份压缩而带来的时间和空间的问题。
下面介绍一下实现方式(linux系统环境)
在编写脚本之前需要先查看一下服务器上是否有crontab功能
注:在这里要赞一下这个crontab功能,确实十分实用
使用 rpm -qa|grep crontab命令查看是否已安装crontab
上图所示,表明已安装。
如果未安装,则使用yum命令进行安装
yum -y install vixie-cronyum -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、$projectppTAR=/bin/tar# 存放备份文件的地方,以项目名称区分bakpp=/data/file_backup/'$project'# 需要备份的文件夹,文件夹的路径project=fileprojectpp=/data/# parament for varibleym=`date +%Y%m`ymd=`date +%Y%m%d`# 存储备份文件的子目录,以月份区分,他的上级目录是$bakpp定义的monthbakpp=$bakpp/$ymgidpp=$monthbakppgidshot=gid$project$ym# 完全备份的文件名fullname=$ym# 增量备份的文件名incrementalname=$ymd# Record the location of the loglog=$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 ];thenecho ''$project'_'$ym'_full.tar.gz file exist!! ====`date +%Y-%m-%d-%T` ' >>$logelsetar_fullfi}######### chk_incremental ######### 检查增量备份是否存在chk_incremental(){while [ -e '$monthbakpp'/'$project'_'$incrementalname'_incremental.tar.gz ]doincrementalname=`echo '$incrementalname + 0.1' | bc `done}######## tar_incremental ######## 执行增量备份tar_incremental(){cd $projectppecho 'BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE '$project'_'$incrementalname'_incremental.tar.gz' >> $logsleep 3$TAR -g $gidpp/$gidshot -zcf $monthbakpp/'$project'_'$incrementalname'_incremental.tar.gz $projectecho 'END_TIME========`date +%Y-%m-%d-%T` ==== CREATE '$project'_'$incrementalname'_incremental.tar.gz' >> $log}######## tar_full ###########tar_full(){touch $gidpp/$gidshotcd $projectppecho '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 $projectecho '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_incrementalelsemkdir -p $bakpp/$ymtar_fullfi}########### let’s begin ############## 先检查$bakpp是否存在,如果不存在先创建后备份if [ -d $bakpp ];thenbackupelsemkdir -p $bakppbackupfi#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=fileprojectpp=/data/
上面的三个路径要根据自己具体情况进行更改
添加定时任务:输入命令
crontab -e
任务示例
05 03 * * * cd /data/file_backup/;sh file_backup.sh
然后使用 crontab -l 查看即可。在备份完成后,可使用命令查看备份文件里面的文件
tar -ztf file.tar.gz //查看备份文件面文件
好了,到此定时备份、增量备份就结束了。
特此说明:更安全的方式是另找一个服务器做文件备份存储服务器。在本机完成定时备份、增量备份后,将文件推送到文件备份存储服务器。这样可以保证在磁盘损坏的情况下达到备份功能
到此这篇关于linux实现对上传文件的定时备份、增量备份的文章就介绍到这了,更多相关linux 上传文件备份内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. 统信UOS系统怎么禁止窗口特效? 统信关闭窗口特效的技巧2. Win10命令提示符被禁止使用怎么办?3. Win11 22000.176搜索打不开怎么解决?Win11 22000.176搜索打不开解决方法4. Win7电脑亮度怎么调?Win7调节屏幕亮度方法5. 联想电脑怎么装win7系统?U盘装lenovo win7 32位详细图文教程6. 统信uos系统怎么管理打印界面和打印队列?7. Fdisk硬盘分区图文教程(超详细)8. 银河麒麟操作系统(KyLin)常用问题及解决方法9. Windows11下载卡着不动怎么办?Windows11下载卡着不动解决方法10. Win10 realtek老是弹出来怎么办?Win10 realtek自动弹出解决方法