再提示『您的磁盘几乎已满』算我输

再提示『您的磁盘几乎已满』算我输

💡 原文中文,约15200字,阅读约需37分钟。
📝

内容提要

作者因磁盘空间不足,编写Node.js程序自动清理文件。通过Magic Number识别文件类型,按策略删除、移动或跳过文件,并支持定时任务和自定义文件类型判断,最终开发成可配置的clean-files工具,避免手动整理。

🔎

延伸解读

Magic Number 识别文件类型的局限

文章通过 Magic Number 识别文件类型,但发现 file-type 库对某些格式(如 .key 被误判为 zip,.dmg 无法识别)存在局限。作者通过检查文件头部二进制,自定义 Magic Number 并扩展配置,解决了误判问题。这提醒我们,依赖 Magic Number 判断文件类型并非万无一失,对于特殊或新格式,可能需要手动补充识别规则。

自动化清理的实用策略

作者根据文件类型和访问时间制定清理策略:直接删除图片、视频、压缩包等,移动文档到分类目录,跳过未知类型和文件夹。同时,通过 atimeMs 判断长期未访问的文件并删除。这种策略兼顾了安全性和效率,但需注意 atime 可能因系统配置而更新不准确,且删除操作应谨慎,建议先记录日志再执行。

定时任务与配置化设计

工具通过 node-schedule 支持 Cron 定时执行,并将所有配置(目录、文件类型、阈值、定时规则)抽离到 .cf-config.js,方便用户自定义。这种设计提高了工具的灵活性和可维护性,但用户需注意 Cron 表达式的正确性,以及定时任务可能带来的资源占用。

Q&A

如何用Node.js自动清理磁盘空间?

作者编写了一个Node.js程序,通过Magic Number识别文件类型,根据配置策略(删除、移动、跳过)自动处理指定目录(如下载、文稿、桌面)中的文件,并支持定时任务,从而避免手动整理磁盘。

什么是Magic Number?在文件类型识别中有什么作用?

Magic Number是文件起始的几个固定字节,用于标识文件类型。通过读取文件头部的Magic Number,可以准确判断文件类型,比依赖文件后缀名更可靠,因为后缀名可以随意更改。

如何判断一个文件是否长期未使用?

通过文件系统获取文件的最后访问时间(atimeMs),如果该时间早于设定的阈值(如60天前),则视为长期未使用,可以删除。

clean-files工具支持哪些文件处理策略?

支持三种策略:删除(DELETE)、移动(MOVE)和跳过(SKIP)。删除针对图片、视频、压缩包等;移动将文档类文件归类到指定目录;跳过则保留文件夹和未知类型文件。

如何配置clean-files工具?

通过配置文件.cf-config.js,可以设置要检查的目录、删除的文件类型、移动的文件类型、日志路径、访问天数阈值以及定时任务Cron表达式。

clean-files工具如何实现定时自动清理?

使用node-schedule库,根据配置的Cron表达式(如每月20号2点)定时执行清理任务,无需手动运行。

为什么需要自定义Magic Number?如何添加?

因为现有的Magic Number列表可能无法覆盖所有文件格式,导致误判(如.key文件被识别为zip)。通过在配置文件中添加customMagicNumberMap,可以自定义文件类型的Magic Number,提高识别准确性。

clean-files工具的项目结构是怎样的?

项目包含index.js(入口)、lib/cleanfiles.js(核心模块)、.cf-config.js(配置文件)、logs目录(日志)和package.json(依赖配置)。

🏷️

标签

➡️

继续阅读