给Nextcloud服务器端手动添加文件
问题
有时候,我们因为网络原因想直接在服务器上下载文件,然后把文件拷贝到Nextcloud的data目录下,再通过客户端自动同步到本地。可是我们拷贝到data对应目录之后,打开Nextcloud客户端不断刷新,What?添加的文件并没有出现。
Why?
这是因为通过web或者客户端访问的时候,Nextcloud是通过查询数据库中的文件信息来返回服务器上的,我们手动拷贝进去的文件信息并没有提交到数据库中,我们在web和客户端中当然就看不到这些文件了。
解决之道
好在Nextcloud提供了一个强大的命令行工具occ,您可以使用occ执行许多常见的服务器操作,例如安装和升级Nextcloud,管理用户,加密,密码,LDAP设置等。
occ文件默认情况下在Nextcloud的根目录下,occ有三个用于管理Nextcloud中文件的命令:
files:cleanup 清除文件缓存
files:scan 重新扫描文件系统
files:transfer-ownership 将所有文件和文件夹都移动到另一个文件夹
看样子files:scan
可以解决我们的问题,files:scan
的用法如下:
格式:
files:scan -p|--path="..."-v|vv|vvv --verbose[user_id1] ... [user_idN]
参数:
user_id 扫描所指定的用户(一个或多个,多个用户ID之间要使用空格分开)的所有文件
选项:
--path 限制扫描路径
--all 扫描所有已知用户的所有文件
--quiet 不输出统计信息
--verbose 在扫描过程中显示正在处理的文件和目录
--unscanned 仅扫描以前未扫描过的文件
扫描所有用户的所有文件,www是data目录的所有者,data目录是Nextcloud创建的,就是以哪个用户启动的Web服务器的,所有者就是谁。
sudo -u www php occ files:scan --all
occ文件位于Nextcloud的根目录下,如果当前目录不是Nextcloud的根目录,则需要补全occ的路径。
如果你给occ文件添加了可执行权限,那我们的命令里面可以省略php,occ文件开头已经指定了由php执行。
执行命令后进行扫描并列出扫描信息,如果不想显示扫描信息,可以在后面加上 --quiet 选项。
扫描指定目录下的文件
Nextcloud文件储存在data文件目录中,扫描指定用户的文件基本上就是扫描指定用户目录下的文件。可通过使用--path选项指定扫描的路径,路径应为相对于data目录的相对路径,
如我把文件存放到/var/www/Nextcloud/data/redtux/files/Documents中,现在需要扫描该目录:
sudo -u www php occ files:scan --path=redtux/files/Documents
执行命令后进行扫描并列出扫描信息。
扫描指定用户的文件
Nextcloud是目录的形式组织不同用户的文件,扫描指定用户的文件基本上就是扫描指定用户目录下的文件。
如扫描用户user1的文件:
sudo -u www php occ files:scan user1
相当于
sudo -u www php occ files:scan --path=user1/files
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭