飞牛遇到的一些问题

geteshi
2025-09-11 / 0 评论 / 2 阅读 / 正在检测是否收录...

1. 个人空间与实际使用不符合

#!/bin/bash
btrfs quota rescan -w /vol1

2. 回收站内容不会自动清理

比如我需要清理的是网络备份这个回收站目录下的文件

#!/bin/bash

# 定义要清理的目录
TRASH_DIR="/vol2/1000/.@#local/trash/网络备份"

# 定义日志文件位置
LOG_FILE="/vol2/1000/网络备份/clean_network_back.log"

# 获取当前时间,用于日志记录
echo "=== 清理任务开始于 $(date) ===" >> "$LOG_FILE" 2>&1

# 检查目标目录是否存在
if [ -d "$TRASH_DIR" ]; then
    # 计算清理前的目录大小
    BEFORE_SIZE=$(du -sb "$TRASH_DIR" 2>/dev/null | cut -f1)
    BEFORE_SIZE=${BEFORE_SIZE:-0}  # 如果目录为空或不存在,设为0
    
    # 执行删除操作,强制删除目录下的所有文件和子目录
    # 使用 /bin/rm 的绝对路径以避免别名问题
    /bin/rm -rf -- "$TRASH_DIR"/* >> "$LOG_FILE" 2>&1
    
    # 计算清理后的目录大小
    AFTER_SIZE=$(du -sb "$TRASH_DIR" 2>/dev/null | cut -f1)
    AFTER_SIZE=${AFTER_SIZE:-0}  # 如果目录为空或不存在,设为0
    
    # 计算释放的空间(字节)
    FREED_SPACE=$((BEFORE_SIZE - AFTER_SIZE))
    
    # 格式化显示空间大小
    format_size() {
        local bytes=$1
        if [ $bytes -ge 1073741824 ]; then
            echo "$(echo "scale=2; $bytes/1073741824" | bc) GB"
        elif [ $bytes -ge 1048576 ]; then
            echo "$(echo "scale=2; $bytes/1048576" | bc) MB"
        elif [ $bytes -ge 1024 ]; then
            echo "$(echo "scale=2; $bytes/1024" | bc) KB"
        else
            echo "${bytes} B"
        fi
    }
    
    FREED_SPACE_FORMATTED=$(format_size $FREED_SPACE)
    
    echo "成功清理目录 $TRASH_DIR 下的所有内容。" >> "$LOG_FILE" 2>&1
    echo "释放空间: $FREED_SPACE_FORMATTED" >> "$LOG_FILE" 2>&1
    echo "清理详情: 清理前 $(format_size $BEFORE_SIZE), 清理后 $(format_size $AFTER_SIZE)" >> "$LOG_FILE" 2>&1
    
else
    echo "错误:目录 $TRASH_DIR 不存在,清理任务已中止。" >> "$LOG_FILE" 2>&1
fi

echo "=== 清理任务结束于 $(date) ===" >> "$LOG_FILE" 2>&1
echo "" >> "$LOG_FILE" 2>&1

将脚本放到某个目录下,比如我的放到的是

**/网络备份/clean_network_back.sh

使用crontab来做定时任务

# 查看当前任务
crontab -l

# 编辑任务
crontab -e

增加一行

# 分别对应秒分时天月
0 8 * * * /vol2/1000/网络备份/clean_network_back.sh
0

评论 (0)

取消