可道云kodbox残留文件清理
一、原因
可道云删除文件分两步:先删数据库记录,再删磁盘文件。磁盘文件由后台任务延迟约24小时后删除,两步不在同一事务内
一次删除大量文件时,如果中途超时或中断,就会出现数据库记录已删除、磁盘文件仍在的情况。这类文件没有记录指向,程序无法自动发现,只能通过磁盘与数据库比对后手动清理
二、扫描
用已登录管理员的浏览器访问
https://你的域名/?admin/repair/clearOrphanFile&path={io:2}&limit=100000{io:2}中的2为存储ID,可在后台「存储管理」查看
该接口只扫描不删除,不要加done参数。扫描完成后会输出残留文件数量、总大小和清单文件路径(位于/var/www/html/data/temp/files/)。
三、清理
确认清单无误后,在原地址后追加&done=1
https://你的域名/?admin/repair/clearOrphanFile&path={io:2}&limit=100000&done=1删除不可恢复,执行前建议备份数据库。
四、Bug修复
扫描接口会报Call to undefined method impDriver::listPath(),需修改一处代码
文件:app/controller/admin/repair.class.php
// 修改前
$list = $api->listPath($path, 200000);
// 修改后
$list = $api->listPathBatch($path, 200000);保存后直接刷新页面即可,无需重启服务