Nextcloud

将ownCloud迁移至Nextcloud的两种方法

如我们所知,现在仍然可以将Nextcloud和ownCloud看作一个东西,至少核心功能是相差无几的。这也使你可以将ownCloud更换为Nextcloud而不必操心兼容性。本文提供了两种迁移ownCloud至Nextcloud的方法。

法一:使用迁移脚本

这是比较简单省力的方法,Nextcloud提供了用于迁移的各项脚本。这个脚本支持ownCloud 8.2~10.0版本。

迁移之前首先要明确一点:你的ownCloud装在了哪里?

这是个很简单的问题,但是仍然有必要确定清楚,一般的,ownCloud会放在

/var/www/html

 里。也许它装在子目录(不推荐),比如

/var/www/html/owncloud

,当然还可以是其他目录,比如

/cloudserver/owncloud

 。在ownCloud的Docker镜像中,

ownCloud被安装在/var/www/html

 。

确定这点之后,进入安装目录:

cd /安/装/目/录

下载

下载Nextcloud提供的迁移工具:

wget https://download.nextcloud.com/server/installer/migrator/index.php

因为在安装目录中已经存在一个index.php了,所以下载的脚本会被自动重命名为index.php.1。接下来将下载好的文件重命名为index.php并放到

updater

 文件夹中:

mv index.php.1 updater/index.php

完成之后设置权限(

www-data

 是HTTP服务器的用户和组):

chmod 750 updater/index.php && chown www-data:www-data updater/index.php

在浏览器中登录ownCloud,然后访问刚才下载的脚本,例如:

https://your.owncloudserver.com/updater/index.php

确保你的ownCloud版本小于10.0.2,不然会出现Could not determine migration path to Nextcloud.的错误。这个BUG在未来可能会被修复

点击“Start update”开始迁移:

然后创建备份、下载Nextcloud(时间可能会比较长)。

对于ownCloud9.1.6版本,在解压时可能会出现一个错误:

 

这个错误挺尴尬的。解决方法是将ownCloud的版本手动设置为9.1.5。编辑config/config.php

vim config/config.php

将
'version' => '9.1.6.2',
改为
'version' => '9.1.5.2',

 

保存退出,刷新浏览器页面。

因为ownCloud9.1.5和9.1.6版本稍有不同,所以这不是一个值得推荐的方法。更好的方法可以参考后文中有关手动迁移的内容。

选择

No(for usage of the web based updater)

 ,关闭维护模式。

在打开的页面中点击“开始更新”:

稍后,页面会自动跳转,你可以看到ownCloud已经被换成Nextcloud,所有的数据和文件都已经完成自动迁移。

个别图标仍是ownCloud的样式,清除浏览器缓存即可。

法二:手动迁移

相比之下,手动迁移更加灵活,步骤类似手动升级ownCloud。

1.启用维护模式

用OCC命令行工具启用维护模式:

sudo -u www-data php occ maintenance:mode --on

也可以在config.php中手动设置。在config/config.php里添加这样一行:

'maintenance' => true,

访问ownCloud,看看维护模式是否已经开启是

2.备份设置和数据库

这个步骤主要是为了以防万一。

需要备份的是data目录和config目录,而里面分别存放这数据和设置。

cp config/config.php /home/config.php.bk 
cp data /home/databk -rf

然后备份数据库(假设数据库名为nextcloud):

mysqldump -u root -p nextcloud>nextcloud.sql,

恢复方法:

mysql -u root -p

mysql>show database;                #查看数据库是否还存在
mysql>create database nextcloud;    #创建缺失的数据库
mysql>use nextcloud;                #切换数据库
mysql>source nextcloud.sql;          #恢复数据库

P.S.:如果你使用的是SQLite数据库,SQLite在迁移后会出现丢失的情况。你需要在迁移之前将SQLite转换成MySQL或者MariaDB:

sudo -u www-data php occ db:convert-type [options] type username hostname database
  • username:数据库用户名
  • hostname:MySQL的地址
  • database:数据库名

示例:

php occ db:convert-type --all-apps mysql oc_mysql_user 127.0.0.1 new_db_name

转换之后再按照上文的步骤备份数据库。

3.更换程序源码

为了方便些,先将需要保留的文件都迁移出来:

cp config/config.php /home/config.php.bk
cp data /home/databk -rf

然后清空目录:

rm * -Rf

下载Nextcloud,ownCloud与Nextcloud版本有对应关系,参照下表下载相应的版本的Nextcloud:

  • ownCloud 8.0.x -> ownCloud 8.1.x -> ownCloud 8.2.x -> Nextcloud 9.0.x -> Nextcloud 10.0.x
  • ownCloud 8.2.x -> Nextcloud 9.0.x -> Nextcloud 10.0.x
  • ownCloud 9.0.x -> Nextcloud 9.0.x -> Nextcloud 10.0.x
  • ownCloud 9.1.x -> Nextcloud 10.0.x -> Nextcloud 11.0.x
  • ownCloud 10.0.- -> Nextcloud 12.0.0

例如我的ownCloud版本是9.1.5,我需要下载Nextcloud 11.0.x

wget https://download.nextcloud.com/server/releases/nextcloud-11.0.2.zip

解压、迁移文件:

unzip nextcloud-11.0.2.zip -d /var/www/
mv /var/www/nextcloud/* /var/www/html/

调整文件权限
chown -R www-data:www-data /var/www/html
find /var/www/html/ -type d -exec chmod 750 {} \;
find /var/www/html/ -type f -exec chmod 640 {} \;

迁移配置文件:

cp /home/config.php.bk /var/www/html/config/config.php
cp /home/databk /var/www/html/data -rf       #data目录的位置由你在ownCloud中的设置决定

关闭维护模式:

方法1:使用OCC命令

sudo -u www-data php occ maintenance:mode --off

方法2:修改config.php

将config/config.php中之前所添加的

'maintenance' => true,

 改为

'maintenance' => false,

 。

如果在迁移之前使用的是SQLite数据库,那么在迁移的时候会出现

An unhandled exception has been thrown: exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1 no such table: oc_appconfig' in /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:104

的错误

在浏览器中访问ownCloud,点击“开始更新”。

你也可以执行以下命令:

sudo -u www-data:www-data php occ upgrade

因为ownCloud和Nextcloud有一些插件不兼容,所以在升级为Nextcloud时,个别插件会被禁用。

点击“继续访问Nextcloud”,就可以使用Nextcloud了。

文件完整性检查错误

在迁移文件时可能会出现.htaccess文件没有迁移的情况。在校验文件完整性时就会报错。

Technical information
=====================
The following list covers which files have failed the integrity check. Please read
the previous linked documentation to learn more about the errors and how to fix
them.

Results
=======
- core
    - INVALID_HASH
        - .htaccess

Raw output
==========
Array
(
    [core] => Array
        (
            [INVALID_HASH] => Array
                (
                    [.htaccess] => Array
                        (
                            [expected] => 11e2db30f0cf23df1b5aa1cdf329a8c88d253f86e43f9e7af1b30969eb0175030103b138e2f7ab7608c902bbb57a5d578c2c0ca09f3abf2ef83415f4bc6f6e20
                            [current] => 9e034bf735877287df33d6ee93465c62c23727a90ed71d1731a7448d239a44054b37c582bb85949307e161d18cfd14420383f55c4862aa8b4975181270e4a761
                        )

                )

        )

)

我们可以看到.htaccess文件的哈希码错误。解决方法很简单,从Nextcloud安装包中拷贝一个.htaccess过去即可。

rm /var/www/html/.htaccess    #删除当前的.htaccess文件
cp -r nextcloud/.htaccess /var/www/html  #将安装包内的.htaccess文件拷贝到目录中

点击重新扫描:

可以看到文件完整性检查的错误信息已经消失。

 

(2)

本文由 橙叶博客 作者:FrankGreg 发表,转载请注明来源!

热评文章

评论:

7 条评论,访客:7 条,博主:0 条
  1. avatar
    ricardo发布于: 

    您好我用的是第一种migration tool,跑的时候有个step 7 issue,修复完了之后点retry就一直卡在step 5, 看了一下netstat发现也没在下载…到现在一天了,而且之前那个web ui 也没了,访问只显示一条“Step 5 is currently in process. Please reload this page later.”…因为没了ui所以我现在也没办法重新开始。。。求救呀

  2. avatar
    ScoTt发布于: 

    我是一个想自建owncloud的新手,从百度之中找到您的博客非常兴奋,里面的内容都是我急需的,通过您的文章解决了好几个问题。
    我现在又遇到一个问题现象,安装完owncloud登录后,删除初始文件会显示黄色字样“加载页面出现问题,在5秒内重新载入”,但是新上传文件可以删除。
    每次新上传一个文件,立刻删除后,再删除初始文件,会在页面上显示删掉了,但是ls进data路径看文件还在。使用desktop客户端时,能把初始文件同步回来,但是本地删除后,远端从页面看还有,ls里也有。不知道您是否可以给我一点帮助,谢谢!
    系统环境:centos7 php7.1 httpd2.4 owncloud10.0.4

    • FrankGreg发布于: 

      1.可能是初始文件权限导致的,实在不行可以到data目录下手动删除,然后php occ files:scan --all
      2.这可能是由于ownCloud回收站功能,文件只是在数据库中标记为已删除,实际上只有在回收站中删除后在会在data下实际删除。
      3.我没怎么用客户端,这个可能是客户端自己的问题。

  3. avatar
    bytefish发布于: 

    查看nextCloud、apache(Nginx)的日志才好分析,注意权限问题。

  4. avatar
    季后发布于: 

    请问下,我是centos7 改完后,修改任何设置都提示输入授权密码,而且一直出现密码输入框,即使输入正确密码也还是弹出授权密码框,这是哪里的问题,两台主机都是同样的情况, 环境是lamp, 改成lnmp也是一样的情况

    • FrankGreg发布于: 

      这个考虑是不是本地浏览器cookie的问题。

  5. avatar
    IPlayForHer发布于: 

    为啥我这改了conf的版本它还是不生效?有redis缓存

发表评论