欢迎光临散文网 会员登陆 & 注册

Nextcloud用户数据备份、迁移及恢复(抢救适用)

2023-04-18 00:11 作者:Laser5252  | 我要投稿

这篇文章涉及到两个问题:

问题1、最近Truenas里面旧版的Nextcloud 23.0崩了,启动不了了,无奈只能重装Nextcloud 25.0,重装之后如何把旧版Nextcloud里面的数据迁移到新版是个问题,否则又重新上传文件就太逆天了。

问题2、Nextcloud软件原来存储数据的路径需要更改,或者原来存储路径的磁盘满了想换到一个容量更大的磁盘路径去。

这里先要知道Nextcloud数据文件在哪:

Nextcloud的数据文件分为系统数据和用户数据,可以看我另外的文章。

用户数据(就是自己和其他用户上传的文件)是存在Nextcloud主目录下data文件夹里面的,这里面有若干个以用户名命名的文件夹,这些文件夹是可以直接复制、移动的,我们进行数据备份、数据迁移或者数据抢救就从这里入手了。

系统数据就是Nextcloud主目录下除了data文件夹以外的其他文件和文件夹,这些文件在进行数据位置迁移的时候也是可以直接复制和移动的,复制和移动后直接启动Nextcloud应用是可以被正常识别的。但如果是重装Nextcloud,暂时没找到可以抢救这部分数据的方法。(如果像同版本重装那样把这部分数据直接拷贝,重装后的Nextcloud是无法正常运行的)

先讨论问题1,软件重装之后如何抢救原来Nextcloud里面的用户数据,用户数据是数量最多容量最大而且每个用户都不一样的数据,这部分数据最好是能完整留存并迁移是最好的,这个目前是能够做到的。

首先,重装的Nextcloud,在重装配置参数的时候,管理员的账号密码建议和旧版Nextcloud保持一致。重装完毕后使用管理员账号密码进入Nextcloud确保是正确安装的,此时新的Nextcloud里面是没有任何数据的,管理员账户中也是没有任何文件的。

然后给新、旧Nextcloud的路径都暂时的开启SMB共享。

如果你的旧版Nextcloud只有一个管理员账户需要迁移,可以往下翻一下跳过这一段,多个账户的迁移需要多一个步骤。

如果你的旧版Nextcloud除了管理员账户,还有其他的账户也需要一起迁移,那就接着往下看。

当你有多个账户需要迁移的时候,需要在重装后的Nextcloud的用户管理页面,将旧版的Nextcloud账户在新装的Nextcloud里面一个个手动新建出来,这时候新建的账户名要和旧版的账户名一样,至于密码的话就没法跟旧版Nextcloud一样了,只能你自己重新给其他账户设置一个默认的密码了。


新建完成后在新版Nextcloud的data文件夹下面你应该可以看一系列跟旧版Nextcloud的data文件夹下面一样的子文件夹,这些子文件夹的名称就是各个账户的账户名。


这个时候在Truenas APPS里面把重装的Nextcloud停止运

下面开始用户数据的迁移,所有人的步骤都一样了。

结合前面的内容,只需要把旧版Nextcloud目录下的data文件夹拷贝进新版Nextcloud目录下就算完成大部分工作了。

关于拷贝用户数据,最简单的办法就是把旧版Nextcloud的data文件夹通过smb直接把目录下的所有文件全部拷贝到新版Nextcloud的data文件夹目录下就行了,但是不推荐,因为两个目录往往是不同盘符用这种方式受限于smb的运作机制,这种拷贝方式速度太慢了,除非你的用户数据很少又是大文件,那可以这样。

根据官方文档,推荐的拷贝方式是使用rsync命令。

具体来说,就是分别找到Truenas里面分别存储新旧数据的文件夹路径,假设分别为:

 /nextcloud-old/ 和 /nextcloud-new/

然后进入Truenas的SSH,执行以下命令:

前后两个路径分别是原始路径和目标路径

这里有个需要注意的地方就是:

路径参数的第一个参数,如果以/结尾,那是把这个文件夹里面的数据复制到新路径中(不包括文件夹本身),如果没有/,这是把这个文件夹整个都复制到新路径中去(包括文件夹本身),用的时候按需设置。而第二个路径参数,带不带/结尾好像都没区别。使用的时候根据自己的需求进行区分。

如果需要拷贝的文件太多,则可以使用  nohup 命令把拷贝任务挂起到后台执行,这样就可以把SSH关了等它自己复制就好了。

后台执行的文件复制记录会生成一个文件存放到运行这条命令的目录下。


复制完成后在Truenas APPS里面启动Nextcloud。此时再登陆进Nextcloud之后发现还是任何变化都没有,管理员账号下还是空空如也,用户管理里面也看不到其他账号的文件内容变化,不要慌。

接着就按照下图的步骤,进入Nextcloud的命令行,注意查看图片里面的具体选项。


进入命令行之后输入 ls 这个时候会显示出Nextcloud程序根目录中所包含的文件和文件夹名称,这些名称就对应着文章前面所讲的Nextcloud主目录下的那些文件和文件夹名称,看到这些说明命令行进入对了。

然后输入命令:

等待Nextcloud自动扫描路径下的用户数据,这个时候Nextcloud就能自动识别你拷贝到对应账户名下的各个原始用户数据了。

此时再用管理员账户登陆进Nextcloud应用中,发现管理员账户原来上传的文件都回来了,再查看用户管理页面,发现其他用户账户的“使用量”这一项也不是0了,说明识别到他们各自账户的原始数据了。


到此,旧版软件数据也算是抢救完了,这个方法我在Truenas论坛问过和也跟其他人讨论过。这个方法需要给其他原始用户手动新建账户,还会重置掉他们原始的账户密码,而且还得一个个手动操作以及重命名data文件夹名称。虽然不完美,但是这应该是目前唯一可行的方案了,至少保住了用户上传的数据。

再说问题2,有了前面的基础,问题2就很好解决了。

应对问题1我们只能用rsync迁移data文件夹,但是到了问题2,我们直接用rsync把整个Nextcloud主目录进行迁移就好了迁移后进入Nextcloud的配置页面,把Nextcloud的数据路径从旧的路径改为新的路径,再重新启动Nextcloud就完事了,全部都能自动识别,不用任何命令行的操作了。


Nextcloud用户数据备份、迁移及恢复(抢救适用)的评论 (共 条)

分享到微博请遵守国家法律