linux下指定根目录,目录 打包到执指定目录下

#!/bin/bash
# 目录打包脚本
# 功能:按指定目录列表打包一级目录下对应子目录为gz压缩包,命名格式:目录名+年月日+4位随机数
# 适配场景:需要打包的目录直接编辑下方TARGET_DIRS数组即可,无需修改其他逻辑

# -------------------- 配置参数 --------------------
BASE_DIR="/opt/test_1"  # 一级源目录路径
PKG_DIR="${BASE_DIR}/app-resources/packages"	# 压缩包输出目录路径

# 手动指定需要打包的目录列表(按格式填写目录名,可自由增删)
TARGET_DIRS=(
    "prompt_v2.0"
    "todo-v2"
)

# -------------------- 基础校验 --------------------
# 检查源目录是否存在
if [ ! -d "$BASE_DIR" ]; then
    echo "[错误] 源目录 ${BASE_DIR} 不存在,请检查路径配置"
    exit 1
fi

# 自动创建压缩包输出目录(若不存在)
mkdir -p "$PKG_DIR"
if [ $? -ne 0 ]; then
    echo "[错误] 无法创建输出目录 ${PKG_DIR},请检查权限"
    exit 1
fi

# -------------------- 打包逻辑 --------------------
current_date=$(date +%Y%m%d)  # 获取当前年月日(如20260723)
count=0  # 打包成功计数器

# 遍历指定目录列表
for dir_name in "${TARGET_DIRS[@]}"; do
    dir_path="${BASE_DIR}/${dir_name}"
    # 校验当前目录是否存在
    if [ ! -d "$dir_path" ]; then
        echo "[警告] 目录 ${dir_path} 不存在,跳过该条目"
        continue
    fi

    # 生成4位随机数(自动补零,范围0001~9999)
    random_num=$(printf "%04d" $(($RANDOM % 10000)))
    # 构造压缩包文件名
    pkg_name="${dir_name}_${current_date}_${random_num}.tar.gz"

    # 执行打包操作
    tar -czf "${PKG_DIR}/${pkg_name}" -C "$BASE_DIR" "$dir_name"
    if [ $? -eq 0 ]; then
        echo "[成功] 已生成压缩包:${PKG_DIR}/${pkg_name}"
        count=$((count + 1))
    else
        echo "[失败] 目录 ${dir_name} 打包失败,请检查权限或文件完整性"
    fi
done

# -------------------- 结果输出 --------------------
echo "========================================"
echo "本次打包完成,共成功打包 ${count} 个目录"
echo "压缩包存放路径:${PKG_DIR}"
echo "========================================"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值