Nextcloud 预览图与文件名不一致的解决方法(重建文件索引)

当Nextcloud正在扫描文件时异常断电,由于扫描未完成,此时预览图与mysql中记录的很可能出现不匹配的情况。

具体表现为:文件名为ABC.png  但实际显示的为  def.png 的缩略图及大图;

解决步骤:

1.  首先停止Nginx/Apache服务

2.  删除 nextcloud/data/appdata_oc3is4osud7x/preview 下的所有预览图, 此时应该能正确显示了。如果无法显示,继续下一步

3. 如果用了redis,需要先执行 redis-cli flushall 命令,把缓存的内容都刷到数据库。

然后 打开nextcloud 数据库,  清空下面4张表

oc_file_locks                # 当NC处理文件时锁定文件的表
oc_filecache                 # 缓存文件表
oc_filecache_extended        # 文件后缀缓存表
oc_files_trash # 回收站

注:清空oc_file_locks表、以及redis的flushall,都是为了避免扫描文件时出现被锁住的情况,如下。

Exception during scan: "files/8e0254253d757ad2a65c895909bc6cd0" is locked

4.  清理缓存

Nextcloud 清理文件缓存命令如下:

rt@rangotec.com$ sudo -u www-data php /home/nextcloud/occ files:cleanup -vvv --all

5.  重建缓存

清理完成缓存后,重新扫描文件,此时数据库表里的数据就会重建,命令如下:

rt@rangotec.com$ sudo -u www-data php /home/nextcloud/occ files:scan -vvv --all

更多Nextcloud occ 命令的使用方法,请参见官网手册。

Using the occ Command — Nextcloud 12 Server Administration Manual 12 documentation

如大量(几万图片)文件时,如果直接拖拽到网站上,就会导致卡死等情况。

此时可以把这些文件通过硬盘、FTP等上传到指定用户的某个目录下,然后运行occ scan命令重建该目录,命令如下:

rt@rangotec.com$ sudo -u www-data php occ files:scan --path="/user_id/files/path"

 

评论列表: