linux实现对上传文件的定时备份、增量备份的方法
介绍
如果你们使用的是类似阿里云的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 //查看备份文件面文件
好了,到此定时备份、增量备份就结束了。
特此说明:更安全的方式是另找一个服务器做文件备份存储服务器。在本机完成定时备份、增量备份后,将文件推送到文件备份存储服务器。这样可以保证在磁盘损坏的情况下达到备份功能
到此这篇关于linux实现对上传文件的定时备份、增量备份的文章就介绍到这了,更多相关linux 上传文件备份内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 linux实现对上传文件的定时备份、增量备份的方法
相关文章
- 映像利用Linux系统实现USB映像文件的创建(linux写usb)
- 据访问Linux 文件系统:数据安全访问之旅(linux目录文件数)
- Linux运行ISO文件:一步一步指南(linux运行iso)
- 一步一步教你安装深度Linux(如何安装深度linux)
- Linux进程最大打开文件数优化(linux进程打开文件数)
- 空间Linux如何节省硬盘空间(linux硬盘释放)
- Installation of NS2 on Linux System(linux下ns2的安装)
- 到到精通Linux编程:从入门到精通之路(linux编程从入门)
- Linux下快速传输文件的方法(linux传文件)
- Linux 分区:管理更加高效的利器(linux分区的作用)
- Linux 利用脚本清理过期文件(linux删除过期文件)
- 在Linux中搜索文件的方法(查找linux文件)
- Linux 项目实施:分享我的经验(linux项目经验)
- 探究Linux中文件类型的深层次秘密(linux文件的类型)
- 批量重命名Linux文件,提升工作效率(批量重命名linux)
- 深入了解Linux系统的层次结构(linux层次结构)
- 管理构建新一代Linux系统:文件树管理(linux文件树)
- 掌握Linux逻辑运算符解开运算之谜(linux逻辑运算符)
- Linux快速拷贝U盘文件(linux拷贝u盘)
- Linux开启WiFi热点,让智能设备更联网更方便!(linux开启热点)
- 如何在Linux上挂载共享文件夹?(linux共享文件夹挂载)
- 构建基于Linux系统的Lua环境(linux lua环境)
- 快速掌握Linux文件所属信息查看技巧(linux查看文件所属)
- Linux进程状态:详解D状态及其含义(linux进程状态d)
- 如何使用Linux检测SD卡?(linux检测sd卡)
- Linux远程连接:轻松实现跨操作系统访问(linux远程连接)
- Linux系统下展开的部署之路(linux系统部署项目)