Nextcloud

OCC命令给ownCloud/Nextcloud手动添加文件

有时候,直接通过Web页面上传文件并不那么方便,于是有的朋友就直接把文件上传到服务器里,然后拷贝到data目录下,打开ownCloud,却还是之前的文件。

这是因为虽然上传了文件,但是ownCloud/Nextcloud的数据库里并没有这个文件的信息。文件信息都被存储在数据库的oc_filecache表中。

使用OCC命令更新文件索引。

occ有三个用于管理Nextcloud中文件的命令:

files
 files:cleanup              #清楚文件缓存
 files:scan                 #重新扫描文件系统
 files:transfer-ownership   #将所有文件和文件夹都移动到另一个文件夹

我们需要使用

files:scan 

 来扫描新文件。

  格式:
  files:scan [-p|--path="..."] [-q|--quiet] [-v|vv|vvv --verbose] [--all]
  [user_id1] ... [user_idN]

参数:
  user_id               #扫描所指定的用户(一个或多个,多个用户ID之间要使用空格分开)的所有文件

选项:
  --path                #限制扫描路径
  --all                 #扫描所有已知用户的所有文件
  --quiet               #不输出统计信息
  --verbose             #在扫描过程中显示正在处理的文件和目录
  --unscanned           #仅扫描以前未扫描过的文件

以下是一个具体的命令示例:

sudo -u www-data php occ files:scan --all   #扫描所有用户的所有文件

执行命令后未进行扫描并列出扫描信息。

如果不想显示扫描信息,可以在后面加上

--quiet

 ,如下:

sudo -u www-data php occ files:scan --all --quiet

指定扫描位置

总是扫描全部信息并不是那么有必要,还会白白消耗服务器资源。

指定扫描的用户

列出所有用户:

sudo -u www-data php occ user:list

为用户ChengYe扫描文件:

sudo -u www-data php occ files:scan ChengYe

指定扫描目录

当使用

--path

 选项时,该路径必须包含以下部分:

"user_id/files/path"
  或
"user_id/files/mount_name"
  或
"user_id/files/mount_name/path"

其中,

/files/

是必须要加上的,不可忽略。

示例:

sudo -u www-data php occ files:scan --path="/ChengYe/files/Photos" #指向用户ChengYe的Photos文件夹

 

(5)

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

关键词:, ,

热评文章

评论:

29 条评论,访客:29 条,博主:0 条
  1. ning
    ning发布于: 

    感谢博主,问题成功解决,想问一下博主您的博客是用什么做的,想做一个,最近尝试了使用Docker安装WordPress一直没法外网访问

    • FrankGreg
      FrankGreg发布于: 

      WordPress,我用的阿里云的服务器

  2. ning
    ning发布于: 

    举个例子,我使用4G网络,不和owncloud在同一网络下使用www.ABC.com:70可以正常访问owncloud,但是我和owncloud在同一局域网络下就无法使用www.ABC.com:70访问,必须树莓派ip加端口192.168.x.x:8080这样访问,这是为啥呢

    • FrankGreg
      FrankGreg发布于: 

      这个可能是路由器回流的问题,具体我也不太懂,你可以看一下这个:<a href="https://blog.csdn.net/a595364628/article/details/51657345" rel="nofollow ugc">https://blog.csdn.net/a595364628/article/details/51657345</a>

  3. ning
    ning发布于: 

    很感谢博主的耐心回答,想再多问一下,我用的是联通的网,树莓派Docker环境搭建的owncloud,如果云转发该怎么操作呢,还有个小问题就是和owncloud在同一网络下使用域名,域名加端口,都无法访问,是什么问题

    • FrankGreg
      FrankGreg发布于: 

      云转发需要服务器,具体和Nginx代理一样。同一网络下用域名加端口无法访问,这个我不是很理解你的意思……

  4. ning
    ning发布于: 

    好的谢谢您,问题成功解决,还想问个小问题,就是我用nginx反代理owncloud,使用的是老毛子的阿里动态解析,现在只能域名加端口访问,在端口转发443端口扫描一直关闭,其他的转发没问题比如8890转本地443,请问有没有什么好的解决方案

    • FrankGreg
      FrankGreg发布于: 

      这个没有很好的办法,因为电信运营商商默认封禁个人用户的80和443端口。可以用云服务器加一层转发到443,具体实施要备案什么的。我记得有的动态dns也有转发服务(要掏钱)。

  5. ning
    ning发布于: 

    Docker 里面安装的owncloud怎么使用occ指令呢,尝试了博主的方法一直报错,大概意思是找不到PHP,又在本地安装了php7.2,还是报错,是否可以直接调用owncloud自带的PHP来操作occ呢

    • FrankGreg
      FrankGreg发布于: 

      这个要登录到docker容器里操作,
      登入容器:
      docker exec -it 容器id /bin/bash

  6. TPR
    TPR发布于: 

    问一下大佬,我的nextcloud版本是17的,安装在centos上,服务器在本地,现在想通过软连接方式连接到我的服务器的另一块硬盘上,让nextcloud直接访问我的另一块硬盘中的数据,但是通过php occ files:scan &#8211;all 没法导入,想问一下occ是不支持这种操作还是我还需要设置一些其他的东西?

    • FrankGreg
      FrankGreg发布于: 

      不支持,因为可能会出现无限循环吧……

  7. 归源
    归源发布于: 

    直接对软连接的目录扫描后,报错如下:
    root@ubuntu:/var/www/html# ln -s /home/data ../data/root/files/Photos/abc
    root@ubuntu:/var/www/html# sudo -u www-data php occ files:scan &#8211;path=&#8221;/user/files/Photos/abc&#8221;
    Starting scan for user 1 out of 1 (root)
    Exception during scan: Following symlinks is not allowed
    #0 /var/www/html/lib/private/Files/Storage/Local.php(178): OC\Files\Storage\Local-&gt;getSourcePath(&#8216;files/Photos/ab&#8230;&#8217;)
    #1 /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php(224): OC\Files\Storage\Local-&gt;file_exists(&#8216;files/Photos/ab&#8230;&#8217;)
    #2 /var/www/html/lib/private/Files/Utils/Scanner.php(234): OC\Files\Storage\Wrapper\Wrapper-&gt;file_exists(&#8216;files/Photos/ab&#8230;&#8217;)
    #3 /var/www/html/apps/files/lib/Command/Scan.php(161): OC\Files\Utils\Scanner-&gt;scan(&#8216;/root/files/Pho&#8230;&#8217;)
    #4 /var/www/html/apps/files/lib/Command/Scan.php(234): OCA\Files\Command\Scan-&gt;scanFiles(&#8216;root&#8217;, &#8216;/root/files/Pho&#8230;&#8217;, false, Object(Symfony\Component\Console\Output\ConsoleOutput), false)
    #5 /var/www/html/3rdparty/symfony/console/Command/Command.php(264): OCA\Files\Command\Scan-&gt;execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #6 /var/www/html/core/Command/Base.php(162): Symfony\Component\Console\Command\Command-&gt;run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #7 /var/www/html/3rdparty/symfony/console/Application.php(874): OC\Core\Command\Base-&gt;run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #8 /var/www/html/3rdparty/symfony/console/Application.php(228): Symfony\Component\Console\Application-&gt;doRunCommand(Object(OCA\Files\Command\Scan), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #9 /var/www/html/3rdparty/symfony/console/Application.php(130): Symfony\Component\Console\Application-&gt;doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #10 /var/www/html/lib/private/Console/Application.php(173): Symfony\Component\Console\Application-&gt;run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #11 /var/www/html/console.php(90): OC\Console\Application-&gt;run()
    #12 /var/www/html/occ(11): require_once(&#8216;/var/www/html/c&#8230;&#8217;)
    #13 {main}

    +&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8211;+
    | Folders | Files | Elapsed time |
    +&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8211;+
    | 0 | 0 | 00:00:00 |
    +&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8211;+

  8. 归源
    归源发布于: 

    同样是磁盘空间不够,把备份的数据放在另一个磁盘下的,希望以连接形式放到网盘中,但软连接一直没有成功,扫描之后还是显示不出来。软连接文件时放在用户的Photos目录下的,目录权限777。不知道有什么关键的地方没有弄好。请教一下。

  9. youh
    youh发布于: 

    我想问一下为什么有的文件夹或文件扫不出来,比如日文或者带符号的,在终端上显示文件名也是????之类的,tab键出来的列表可以正常显示

  10. 电人超万
    电人超万发布于: 

    有没有什么办法可以在所有用户的网盘中创建一个共享目录呢?软连接可行吗?

    • avatar
      吃猫猫的鱼鱼发布于: 

      通过主账号创建文件夹然后共享到你想要共享的分组,让他们上传的位置都在共享的文件夹里面即可实现

  11. Leon
    Leon发布于: 

    nextcloud 能不能添加一个软链接呢?因为nextcloud所在的分区空间不够,我想把其他目录通过软链接放到nextcloud下,但是用scan命令出错,有没有办法解决?

    • FrankGreg
      FrankGreg发布于: 

      试了以下,软连接是可行的,scan命令也可以正常使用。检查一下链接的哪个目录权限设置是否正确。

      • Leon
        Leon发布于: 

        链接的目录权限分给了www-data,有读写权限,符号链接的所有者也改成了www-data,但是scan时报错,信息如下,请帮忙看下是哪里有问题,谢谢!
        Exception during scan: Following symlinks is not allowed

  12. 枫影
    枫影发布于: 

    请问能否通过occ修改data存储路径???还是说,只能直接修改config文件内的路径指向来解决?
    感谢!

    • FrankGreg
      FrankGreg发布于: 

      应该只能修改config文件吧……我翻译过全部的OCC命令用法,不记得有这样命令

  13. goedward
    goedward发布于: 

    你好,我是在deepin下用snap的方式安装的nextcloud,按照你的教程,在终端运行sudo -u root php occ files:scan &#8211;all时,提示sudo: php:找不到命令,请问这大概是什么情况?

    • FrankGreg
      FrankGreg发布于: 

      apt-get install php5-cli,就可以了

      • 逗比
        逗比发布于: 

        同样snap安装Debian 使用扫描命令返回
        Could not open the input file :occ
        这个是怎么回事呀

        • FrankGreg
          FrankGreg发布于: 

          看看工作目录下是否有OCC文件

  14. 秋雨
    秋雨发布于: 

    我想问一下. centos下occ怎么用呢?

    • FrankGreg
      FrankGreg发布于: 

      参见:<a href="https://www.orgleaf.com/930.html">occ</a>

发表评论