shell 备份文件脚本+自动清理

自动清理超出备份数的最老备份文件

#! /usr/bin/env bash

# 备份目录
bak_dir="../bak"
# 备份最大数量
bak_max=5

# 备份文件名固定为如下格式
# archive.tar.gz

echo -n "请输入备份版本号:"
read version

if [ -f ./archive.tar.gz ];then
  echo "clean archive.tar.gz"
  rm -rf archive.tar.gz
fi

tar -zcf archive.tar.gz ./*

if [ ! -d $bak_dir ];then
  mkdir $bak_dir
fi

bak_file="${bak_dir}/archive.${version}.tar.gz"

# 已存在备份文件 则做覆盖
if [ -f $bak_file ];then
  rm $bak_file
fi

cp archive.tar.gz $bak_file
echo "baking success $bak_file"

# 清除老的备份
bak_cnt=$(ls -l $bak_dir | grep "^-" | wc -l)
echo "bak cnt $bak_cnt"

while (( $bak_cnt > $bak_max )); do
  oldest_file=$(ls -rt $bak_dir | head -1) #获取最旧的备份
  echo "delete old file: "$oldest_file
  rm -rf $bak_dir/$oldest_file
  let "bak_cnt--"
done

echo "----  bak file list ----"
ls -l $bak_dir | egrep "^-|^d"
echo "----  bak file list ----"

可执行权限

chmod a+x bak.sh

在想要备份的文件夹下执行 ./bak.sh 即可

规范至上

1.7k 声望
121 粉丝
0 条评论
推荐阅读
C4模型的绘制及示例
环境准备VsCode + PlantUML插件 {代码...} 相关文献C4 模型 - 可视化架构设计使用PlantUML绘制C4模型风格的软件架构图C4 model技术架构图--context图代码示例 {代码...}

big_cat阅读 71

`hadoop fs -mkdir <path>` 创建的目录位置
linux创建文件夹命令mkdir 绝对路径 {代码...} mkdir 相对路径 {代码...} hadoop创建文件夹命令hadoop fs -mkdir 绝对路径 {代码...} hadoop fs -mkdir 相对路径 {代码...} [链接]

guyu阅读 661

Flink start-cluster.sh
关键的函数 TMWorkers(启动TaskManager)、readMasters(读取masters信息)、readWorkers(读取worker信息),定义了一些环境变量

journey阅读 608

基于分布式数据库本身的定时备份方法
在大型分布式数据库中,对于数据的保护显得尤为重要,备份则是对数据进行保护的一种合理手段。若要对不断更新的数据进行保护,则可以在指定时间点对数据库数据进行备份。这样,当数据库发生故障时,可以及时还原...

KaiwuDB阅读 490

封面图
MySQL和MongoDB如何JOIN查询?一个直接在本地运行的SQL执行引擎
在微服务和云原生愈发流行的今天,数据的分布也愈发脱离单库单机而更加复杂,使用的数据库类型也会更多,但业务的复杂依然会带来了大量的数据查询和导出需求,而很多时候我们很难为数据量的大部分系统创建完整的B...

snower阅读 438

定时备份MySQL数据库
MySQL 提供了 mysqldump 命令来实现导出数据库,命令用法如下: {代码...} 在 Linux 服务器中结合 crontab 定时命令实现定时备份数据库,同时支持压缩、备份日志、定期清理等功能。1. 备份执行脚本新建 mysql 的...

yotcap阅读 417

Shell在日常工作中的应用实践
作者:京东物流 李光新1 Shell可以帮我们做什么作为一名测试开发工程师,在与linux服务器交互过程中,大都遇到过以下这些问题:•一次申请多台服务器,多台服务器需要安装相同软件,配置相同的环境,同样的操作需...

京东云开发者阅读 391

封面图

规范至上

1.7k 声望
121 粉丝
宣传栏