扫描任务
为什么需要扫描功能
蓝眼云盘的物理文件是直接存储在磁盘中,物理文件的元信息是存储在数据库中的,在蓝眼云盘界面上看到的文件都是数据库中存放的元信息。 可能我们删除了磁盘中的文件,或者往磁盘中添加了新的文件后蓝眼云盘界面上却没有任何变化。 这时候如果有一个任务能够同步物理文件和数据库元信息, 那么就能够让蓝眼云盘中的文件保持和物理磁盘一致。
常见使用场景
- 我的服务器用下载软件下载文件,我希望文件下载好了之后,蓝眼云盘可以第一时间看到。
- 我的服务器文件有时候想要删除,我希望蓝眼云盘一起删除这些文件。
扫描配置
在前端偏好设置处配置。 需要特别指出的是cron表达式采用标准cron表达式,与Linux 中crontab命令相似,cron库支持用 5 个空格分隔的域来表示时间。这 5 个域含义依次为:
规则
- Minutes:分钟,取值范围[0-59],支持特殊字符* / , -;
- Hours:小时,取值范围[0-23],支持特殊字符* / , -;
- Day of month:每月的第几天,取值范围[1-31],支持特殊字符* / , - ?;
- Month:月,取值范围[1-12]或者使用月份名字缩写[JAN-DEC],支持特殊字符* / , -;
- Day of week:周历,取值范围[0-6]或名字缩写[JUN-SAT],支持特殊字符* / , - ?。
举例
- * * * * * 表示每分钟
- 1 * * * * 表示每个小时的第1分钟
扫描任务
扫描配置完成后,蓝眼云盘就会根据cron表达式定期执行扫描任务。 扫描任务主要做两件事情:
- 遍历某个用户蓝眼云盘中的文件,判断对应的物理文件是否还存在,如果物理文件不存在了,那么删除蓝眼云盘文件。
- 遍历某个用户物理根目录下的文件,如果蓝眼云盘中没有文件的元信息,就在蓝眼云盘中创建对应的文件或文件夹。
扫描任务执行会在后端打印日志,可以从日志中观察执行情况。