历史版本2 :文件拆分:只保留最新拆分的文件 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

文件输出算子 可将数据按行数拆分至多个文件,但存在以下问题:

场景
问题
每次运行后,被拆分的文件存在重名情况

用户多次运行任务,根据数据量不同,被拆分的文件个数可能不同

若用户第一次运行任务,数据被拆分为 5 个文件,第二次运行任务数据被拆分为 3 个文件,上一次被拆分的文件依然存在,影响用户查看文件数据

每次运行后,被拆分的文件不存在重名情况

若被拆分的文件以日期和时间命名,文件不重名,但随着运行次数增多,生成的拆分文件过多,占用空间

本文提供方案解决上述问题。

1.2 实现思路


2. 操作步骤编辑

本文

2.1 SH 文件准备

1)本文方案中,需要使用 shell脚本 节点,所以需要配置 SSH 数据连接。步骤请参见:配置SSH协议数据连接

2)准备.sh脚本文件。

示例文件:SH文件.zip

.sh 文件代码如下:

用户根据实际情况修改下面代码,本文示例中,被拆分后的文件保存在/opt/ceshi/wendy下,所以 search_path 的值为/opt/ceshi/wendy

#!/bin/bash
timestamp=$(date +%Y-%m-%d-%H:%M:%S) # 获取当前时间
# 定义要压缩的文件列表(包括路径)
folder_name="测试" # 将此处修改为需要查找和删除的文件夹名
search_path="/opt/ceshi/wendy"   # 将此处修改为目标文件夹的路径

find "$search_path" -type f -iname "*$folder_name*.xlsx" -exec tar -rvf "$search_path/$folder_name备份_$timestamp.tar" {} +
# 如果 tar 文件为空(即没有找到文件),则删除它
if [ ! -s "$search_path/$folder_name_$timestamp.tar" ]; then
    rm "$search_path/$folder_name_$timestamp.tar"
    echo "没有找到名为 $folder_name 的 .xlsx 空文件,因此未删除压缩文件。"
fi

days_ago=$(date -d "7 days ago" +%Y%m%d)

# 使用find命令找到并删除7天前的.tar文件
find "$search_path" -type f -name "*.tar" ! -newermt "$days_ago" -exec rm -f {} \;

# 输出完成消息
echo "已删除超过$days_ago前的所有.tar文件。" 
find "$search_path" -type f -iname "*$folder_name*.xlsx" -delete

    3)将 .sh 脚本文件上传到/opt/ceshi下。如下图所示:

    1711093758354865.png

    4)赋予 .sh 脚本文件执行权限。如下图所示:

    chmod +x wenjian.sh

    1711093858133911.png

    2.2 设置 shell 脚本节点

    1)新建定时任务,拖入「shell脚本」节点。

    2)