​ Nextcloud支持多种访问方式,但是最快速的导入文件还是直接复制最为稳妥。Nextcloud对于服务器未经Nextcloud操作的文件,用Nextcloud根目录下的occ工具进行导入,在Docker中则是另外一种方式。

​ 我们的Nextcloud并不是官方的版本,而是Wonderfall的版本(链接:https://github.com/Wonderfall/docker-nextcloud),这里我们只讨论此版本。

版本信息

Docker 18.09.0

Wonderfall/Nextcloud 14.0.4


1.导入文件

​ 对于本地服务器,我们使用mvcp命令即可,但对于另外的服务器,我们可以选择使用scprsync,考虑到外网发布服务的安全等问题,这里我们选择使用rsync

rsync支持使用ssh通道,并且支持ssh自定义端口,同时rsync还支持如下自定义参数:

  • -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

    • -r, --recursive 对子目录以递归模式处理
    • -l, --links 保留软链结
    • -p, --perms 保持文件权限
    • -t, --times 保持文件时间信息
    • -g, --group 保持文件属组信息
    • -o, --owner 保持文件属主信息
    • -D, --devices 保持设备文件信息
  • -v, --verbose 详细模式输出
  • -e, --rsh=command 指定使用rsh、ssh方式进行数据同步

以上三个参数基本满足我们的使用了,实际使用过程中很像scp

# 例子
rsync -av -e 'ssh -p 2500' localfile root@domain.com:/data/docker/nextcloud/data/user/files
  • localfile 本地文件或文件夹,如果不在工作目录,需要填写绝对路径
  • root@domain.com 拷贝到的服务器,这里root指定用户
  • /data/docker/nextcloud/data/user/files 拷贝到的服务器的路径,这里填写的是nextcloud用户user的文件映射的存储路径,nextcloud需要用户的文件存放对应的目录。

2.调整权限

​ Docker不同于虚拟机,所以跑在宿主机上的容器都是使用相同的内核,自然也就使用相同的UIDGID,我们使用的Wonderfall/nextcloud镜像是采用1000:1000用户与用户组进行构建的,所以我们需要对刚刚传输的文件进行chown操作。

chown -R 1000:1000 /wwwdata/docker/nextcloud/data/user/files/localfile

如果不进行这个操作,OCC导入文件后会发现此文件/文件夹不可读写,无任何权限。


3.OCC扫描文件系统

​ 刚刚说的OCC导入文件,其实是利用OCC进行重新扫描文件系统建立缓存。

​ Wonderfall/nextcloud镜像与官方不同的是,OCC命令更容易使用。默认命令为docker exec -it nextcloud occ,OCC后即可接我们需要进行的操作,这里因为是只需要重新扫描文件系统,只介绍这个命令。

  • docker exec -it nextcloud occ files:scan user1 user2 -v

    • docker exec -it nextcloud occ 略
    • files:scan 重新扫描文件系统
    • user1 user2 可以设定扫描哪个用户,不填则全部扫描,中间以空格间隔
    • -v 显示细节

如刚刚我们已经调整好权限的文件,命令如下:

docker exec -it nextcloud occ files:scan user -v

根据实际测算,100G的图片视频文件,扫描时间大约在2分钟之内,因为加了-v参数,所以可以看到详细的过程。


参考链接:

Last modification:May 7th, 2019 at 03:14 pm