Linux使用shell脚本实现增量备份文件、Linux合并历史备份文件、Linux中find命令查询、tar -cvzf文件生成压缩包、Linux压缩包合并

1 篇文章 0 订阅
#!bin/bash

#数据存储的地址
dataPath='opt/zndz/bin/logs/';
#查询存储地址中两天内修改或创建的文件,${dataPath}前面加上/是因为存储路径中没有带上opt前面没有/
findDataPaths=`find /${dataPath}  -ctime -2 -type f`
#临时目录,用于保存
temp_path='/opt/temp_backups/';
#创建临时文件目录
sudo mkdir -p ${temp_path}
#开始循环处理查询到的文件
for path in ${findDataPaths}
do
        #创建临时存储目录,用于下方复制使用
        sudo mkdir -p ${temp_path}${path%/*}
        #将查询到的文件复制到新建目录中
        sudo cp ${path} ${temp_path}${path%/*}
        echo ${path%/*} #打印文件路径
        echo ${path##*/} #打印文件名字
done;
#获取上一次备份的文件压缩文件
oldTarPath=`find /opt/ -name '*backup.tar'`
#创建时间,用于压缩包命名
createTime=$(date +%Y%m%d)-$(date +%H%M%S);
#进入临时存储文件目录
cd ${temp_path}
#新备份文件的名字
newBackupPath='/opt/logs-'${createTime}'-backup.tar'
#将删选的数据生成压缩包,前段是压缩包命名,后段是数据存放地址
sudo tar -cvzf ${newBackupPath}  ${dataPath}
#删除临时存放目录
sudo rm -rf ${temp_path}
#如果没有老文件则不合并,有则使用cat进行合并压缩包
if [ ! -n "$oldTarPath" ]; then
  echo '没有发现历史压缩包'
else
  #这里使用cd切换目录是为了防止出现 sudo: unable to resolve current working directory
  cd /${dataPath}
  #合并文件时间
  mergeTime=$(date +%Y%m%d)-$(date +%H%M%S)
  #生成合并的新压缩包
  sudo cat ${oldTarPath} ${newBackupPath} > /opt/logs-${mergeTime}-backup.tar
  #这里使用cd切换目录是为了防止出现 sudo: unable to resolve current working directory
  cd /${dataPath}
  #删除上个版本老备份数据
  sudo rm -f ${oldTarPath}
  #删除合成前的新备份数据
  sudo rm -f ${newBackupPath}
fi

1、没有历史备份文件执行后效果如下
在这里插入图片描述
2.1、有历史备份的执行,为了方便查看,本次执行注释掉了历史版本的删除
在这里插入图片描述
执行后会生成三个压缩包,第一个是历史备份文件,第二个是本次备份文件,第三个是合并后的备份文件
在这里插入图片描述
2.2、有历史备份的执行,本次执行没有注释掉删除历史版本,图一是执行前,图二是执行后
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Acmen-zym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值