重建并修复Nextcloud的存储目录

昨天把一台服务器上的 Nextcloud 迁移到了另一个服务器上。存储的文件都不需要了,为了减少备份压缩包的体积就直接在shell里删了。

本想着直接把页面文件和数据库迁移后就可以了。但是在重建存放上传文件的存储目录时却遇到了一些插曲,这里记录一下过程。

操作过程

把程序本体和数据库部署好后,先要找到存储目录的路径。默认是保存在 Nextcloud 安装目录下,这台服务器则改到了其他路径下。

在网站根目录config\config.php中可以找到存储目录的路径,并在相应的地方新建目录。例如这里是:/www/nextdata
Nextcloud存储路径
此时访问 Nextcloud 的页面,会看到以下提示:

Your data directory is invalid
Ensure there is a file called ".ocdata" in the root of the data directory.

这个似乎是一个标志性的文件,很好解决,直接在存储目录下创建一个同名的空文件即可,例如:

touch .ocdata

再次访问页面,可以正常登陆了,不过显示了旧的文件列表。这是因为全部的文件信息都是保存在数据库里的,从外部手动删除文件后 Nextcloud 并不会自动更新列表,需要用命令行工具重新扫描一遍。

回到终端里,直接运行 Nextcloud 的命令行工具,重新扫描文件

sudo -u www /usr/local/php/bin/php occ files:scan --all

这时候会出现一个提示,stev的用户目录不可写入(Nextcloud 中的用户名叫stev)

一番尝试后发现其实是目录结构有问题。

这时候做三件事:

首先在存储目录下,给所有的用户都按 “用户名/files”的结构建立目录,有多少用户就建立多少次,例如:

mkdir -p stev/files

记得回到外部存储目录(/www/nextdata),修改一下文件夹的权限(改为Web服务所在的用户和用户组)

chown -R www:www *

再次切换到 Nextcloud 的安装目录下,执行扫描文件的命令:

sudo -u www /usr/local/php/bin/php occ files:scan --all
# 只有一个用户的话也可以用以下命令
sudo -u www /usr/local/php/bin/php occ files:scan 用户名

最后回到 Nextcloud 的页面,一切就正常了

启动occ报错问题

官方给的启动occ工具命令如下:

sudo -u www php occ files:scan -all

因为环境变量配置不同的原因,直接用 www 用户的身份去运行可能会提示找不到命令“php”,一种解决方式就是像上面写出完整路径。
不同服务器上php的位置不一定相同,可以用whereis php命令找到。

除特别注明外,本站内容皆为 咸鱼先锋 原创,可自由引用,但请注明来源和链接。
https://xyuxf.com/archives/2136
欢迎关注 咸鱼先锋 (微信号公众号:xyuxf),获取干货推送
THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录