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)