重建并修复Nextcloud的存储目录
昨天把一台服务器上的 Nextcloud 迁移到了另一个服务器上。存储的文件都不需要了,为了减少备份压缩包的体积就直接在shell里删了。
本想着直接把页面文件和数据库迁移后就可以了。但是在重建存放上传文件的存储目录时却遇到了一些插曲,这里记录一下过程。
操作过程
把程序本体和数据库部署好后,先要找到存储目录的路径。默认是保存在 Nextcloud 安装目录下,这台服务器则改到了其他路径下。
在网站根目录config\config.php中可以找到存储目录的路径,并在相应的地方新建目录。例如这里是:/www/nextdata
此时访问 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),获取干货推送
mjiang99
我群晖上出现这个问题,后来发现还是/config/config.conf的绝对路径不对。
‘datadirectory’ => ‘/volume1/web/nextcloud/data’,搞错了,写成了
‘datadirectory’ => ‘/volume2/web/nextcloud/data’,