Nextcloud硬盘更改

4 min

language: ja bn en es hi pt ru zh-cn zh-tw

你好,我是个无能的人。
实际上,如果是在云端托管,因磁盘损坏而更改数据存储位置的情况,大概只有在环境迁移时才会发生,但我将NextCloud的数据保存在一个即将损坏的硬盘上,所以我决定将其指定到另一个硬盘。
我使用NextCloud的方式,只是作为本地环境的媒体播放器,或者临时且简单地用于不同操作系统之间的文件共享,所以没有重要文件。家里某台机器里的数据,比如存放着不常启动的EEPROM提取机器的BIOS文件,或者制作备忘录。还有就是把不知不觉积累起来的PDF文件随便扔进去。

实际上,只需更改挂载点即可,所以似乎连这个都不需要做,但由于我已经为已挂载的硬盘指定了另一个挂载点,感觉可能会影响到其他shell脚本,所以为了心理上的整洁,我决定重新创建一个。

说实话,即使不更改NextCloud的config/config.php配置文件中datadirectory的路径,只需在原指定位置创建一个符号链接即可,但总觉得不舒服,所以我决定在另一个硬盘上专门为NextCloud数据创建一个独立的目录并指定它。

※本文并非数据迁移,而是磁盘更改。

创建数据目录

我将在已挂载的硬盘上创建NextCloud的数据目录。
而且,似乎不创建.ocdata就会报错,所以用touch命令创建它。我忘了即使带有-R选项,它也不会递归地查看.文件

sudo mkdir /media/3t/ncdata
sudo touch /media/3t/ncdata/.ocdata
sudo chown www-data:www-data /media/3t/ncdata
sudo chown www-data:www-data /media/3t/ncdata/.ocdata
sudo chmod 750 /media/3t/ncdata

编辑config.php

而且,如果datadirectory已经不存在,甚至无法进入维护模式,所以我会先编辑config/php文件更改设置,然后再进行包括操作确认在内的步骤。

cd /your/nextcloud/dir
sudo vim config/config.php

然后将以下设置指定到刚才创建的目录。

  'datadirectory' => '/media/3t/ncdata',

现在,如果开启维护模式后没有报错,就再次关闭它。

cd /your/nextcloud/dir
$ sudo -u www-data php ./occ maintenance:mode --on
Maintenance mode enabled
$ sudo -u www-data php ./occ maintenance:mode --off
Maintenance mode disabled

好的。

再次执行文件扫描

也许是因为我安装了插件,如果在插件指定的路径中存在已经不存在的目录,登录NextCloud后就无法查看内容并报错了。
我将再次进入维护模式,执行文件扫描,重新获取文件索引。

cd /your/nextcloud/dir
$ sudo -u www-data php ./occ maintenance:mode --on
Maintenance mode enabled
$ sudo -u www-data php ./occ files:scan --all
Starting scan for user 1 out of 2 (Fox)
Path not found: User folder /media/3t/ncdata/Fox/ exists in cache but not on disk
Starting scan for user 2 out of 2 (nextcloud)
Path not found: User folder /media/3t/ncdata/nextcloud/files exists in cache but not on disk
+---------+-------+-----+---------+---------+--------+--------------+
| Folders | Files | New | Updated | Removed | Errors | Elapsed time |
+---------+-------+-----+---------+---------+--------+--------------+
| 0       | 0     | 0   | 0       | 0       | 2      | 00:00:00     |
+---------+-------+-----+---------+---------+--------+--------------+
$ sudo -u www-data php ./occ maintenance:mode --off
Maintenance mode disabled

哦... 好像报错了...
所以,我将创建那些被提示不存在的目录。

sudo mkdir /media/3t/ncdata/Fox/files
sudo mkdir /media/3t/ncdata/nextcloud/files
sudo chown -R www-data:www-data /media/3t/ncdata
sudo chmod -R 750 /media/3t/ncdata

这样就完成了。

再次扫描

cd /your/nextcloud/dir
sudo -u www-data php ./occ files:scan --all

如果这次通过了,就顺利完成了。

确认到这里,我将只针对文件削减NextCloud数据文件的权限。

cd /media/3t
sudo find ./ncdata  -type f -exec chmod 640 {} \;

上次我在Android设备上通过自己的WireGuard VPN连接,现在可以在连接VPN的状态下访问NextCloud了。
以前我通过Nginx反向代理使用MyDNS随意租用的免费DNS,但在通过反向代理的环境下播放媒体时,会出现进度条无法工作的问题,现在也解决了。

从安全性角度考虑,我觉得也可以不再使用MyDNS上的域名进行访问了。

顺便说一下,我不组建RAID的原因是经常看到RAID控制器损坏后会陷入地狱的案例,所以想避免这方面的麻烦。如果要做的话,会考虑ZFS,但只有当我想使用的数据区域超过5TB时才会考虑组建。

我个人希望能在数据中心大量抛售SSD的时候抓住机会入手。
就到这里。下次再见。

Related Posts