HDFS 定时清理 Shell 脚本 - 自动删除旧文件
#!/bin/bash
设置 HDFS bin 目录路径
HADOOP_HOME='/usr/local/hadoop/bin'
设置要清理的 HDFS 目录路径
HDFS_DIR='/user/hadoop/tmp'
设置保留文件的最大天数
DAYS_TO_KEEP=7
获取当前时间戳
CURRENT_TIME=$(date +%s)
将天数转换为秒
SECONDS_TO_KEEP=$((DAYS_TO_KEEP * 86400))
计算要保留的最旧文件的时间戳
OLDEST_TIME=$((CURRENT_TIME - SECONDS_TO_KEEP))
删除指定天数之前创建的文件
$HADOOP_HOME/hdfs dfs -ls -R $HDFS_DIR | grep -e '^-.*' | awk '{print $6" "$7" "$8" "$9}' | while read line ; do file_time=$(date -d "$(echo $line | awk '{print $1" "$2" "$3}')" +%s) if [[ $file_time -lt $OLDEST_TIME ]] ; then file_path=$(echo $line | awk '{print $4}') $HADOOP_HOME/hdfs dfs -rm -r -skipTrash $file_path echo 'Deleted file: '$file_path fi done echo 'HDFS cleanup complete.'
原文地址: https://www.cveoy.top/t/topic/nu5t 著作权归作者所有。请勿转载和采集!