突发奇想,两个网盘开源项目合并到一起,实现网盘自由

简介: 两个网盘开源项目合并到一起,实现网盘自由一个项目是 [ZFile]一个项目是 [nextcloud]

突发奇想,两个网盘开源项目合并到一起,实现网盘自由

一个项目是 [ZFile]

https://docs.zfile.vip/#/?id=zfile

预览地址: https://zfile.vip

文档地址: https://docs.zfile.vip

社区地址: https://bbs.zfile.vip

项目源码 : https://github.com/zhaojun1998/zfile/

前端源码 : https://github.com/zhaojun1998/zfile-vue/

文档源码 : https://github.com/zhaojun1998/zfile-docs/

此项目是一个在线文件目录的程序, 支持各种对象存储和本地存储, 使用定位是个人放常用工具下载, 或做公共的文件库. 不会向多账户方向开发.

一个项目是 [nextcloud]

Nextcloud :ownCloud 的衍生版本,在其基础上做了许多改进,地址:https://nextcloud.com/

一,环境准备

机器一台,配置看自己需求

安装docker

二,开始部署

1,docker安装nextcloud

docker run -d -v /root/nextdb:/var/www/html/data --name  next -p 8181:80 nextcloud

docker run :启动一个容器
-d:后台运行容器
--restart=always:Docker 重启的时候容器也会重启
--name nextcloud:命名容器的 name 为 nextcloud,可以替代容器 id 使用
-p 8080:80:将容器的 80 端口映射到服务器的 8080 端口
--restart=always  跟着docker服务一起启动
nextcloud:要启动的镜像名称
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                   NAMES
b91c4c43b918   nextcloud   "/entrypoint.sh apac…"   2 minutes ago   Up 2 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   great_hofstadter

这里我们直接使用nextcloud的存储在主机上面的的数据库,就不搭建数据库存储

浏览器初始化,管理员账号密码啥的 数据存储在/var/www/html/data

取消下面小勾,不用安装那个杂七杂八的,进行安装

可能存在要给权限的问题,那我们就给权限

2,docker安装zfile

docker pull zhaojun1998/zfile

首次运行会自动创建数据库目录和日志文件目录,并映射到本地,分别为 /root/zfile/db (数据库文件) 和 /root/zfile/logs (日志文件). 后期迁移可直接将整个zfile目录备份恢复, 并再次执行以下命令。

mkdir -p /root/zfile/logs
mkdir -p /root/zfile/db
docker run -d --name=zf --restart=always \
    -p 8080:8080 \
    -v /root/zfile/db:/root/.zfile/db \
    -v /root/zfile/logs:/root/.zfile/logs \
    zhaojun1998/zfile
#执行结果如下
[root@GrayNext-VM ~]# mkdir -p /root/zfile/db
[root@GrayNext-VM ~]# mkdir -p /root/zfile/logs
[root@GrayNext-VM ~]# docker run -d --name=zf --restart=always 
  -p 8080:8080  -v /root/zfile/db:/root/.zfile/db  -v /root/zfile/logs:/root/.zfile/logs zhaojun1998/zfile
060830d53146a7fa54ce165fcad9433a410e3f4844572d58f19aed1d9252022a
[root@GrayNext-VM ~]#

安装依赖

# CentOS系统
yum install -y java-1.8.0-openjdk unzip

# Debian/Ubuntu系统
apt update
apt install -y openjdk-8-jre-headless unzipCopy to clipboardErrorCopied

出现complete!即为安装成功。

浏览器初始化,密码啥的,最后我们这个进行挂载

后台设置-驱动器列表

后台设置-驱动器列表

后台设置-新增驱动器,挂载本地存储就可以了

后台设置-新增驱动器

然后简单设置一下

我们访问一下,后台可以往/root/zfile/db 传东西都是能在网页上显示的

这里两个项目都可以独立使用了

三,合并他们两的文件,实现文件共享,优势共享,缺点互补

第一

是使用脚本同步他们俩的数据文件

一个是/root/zfile/db

一个是/root/nextdb/$username/files

编辑vim db-next.sh 双向同步脚本

#安装同步备份软件,该软件可以同步了增量信息
yum install rsync
#编辑vim db-next.sh
#写入下面
#使用rsync命令进行同步  rsync -av 源目录 目标目录

rsync -av  /root/nextdb/lxf/files/*  /root/zfile/db
rsync -av /root/zfile/db/* /root/nextdb/lxf/files

写一个定时任务执行脚本,我这里是每分钟同步一次

crontab -e

*/1 * * * *  sh db-next.sh

第二

因为上面使用同步脚本,仅仅只能把文件使两个文件夹都有,有人说这样搞了应该没得问题了,但是nextcloud有一个问题,这是官方说了的

添加文件到nextcloud把自己本地的文件复制到nextcloud相应的用户目录中,nextcloud中并不会显示,因为数据库中没有相应的数据,这里就需要手动执行命令,nextcloud才会把文件数据添加进数据库里docker exec nextcloud php occ files:scan --all//或docker exec --user www-data nextcloud php occ files:scan --all

按照上面的官方解释 我这里就使用上面这条命令

docker exec -u 文件拥有者 容器名 php occ files:scan --all

文件拥有者:使用ll命令查看nextcloud数据文件的拥有者

cd /root/nextdb/$username/fileslldrwxr-xr-x 2 33 tape     4096 Feb  7 23:10 Documents-rw-r--r-- 1 33 tape 10944512 Feb  8 00:22 en - 嚣张.mp4
[root@aliyunhost ~]# docker exec next php occ files:scan --allConsole has to be executed with the user that owns the file config/config.phpCurrent user id: 0Owner id of config.php: 33Try adding 'sudo -u #33' to the beginning of the command (without the single quotes)If running with 'docker exec' try adding the option '-u 33' to the docker command (without the single quotes)#第一次使用报错,按照提示添加一些参数[root@aliyunhost ~]# docker exec -u 33 next php occ files:scan --allStarting scan for user 1 out of 1 (lxf)+---------+-------+--------------+| Folders | Files | Elapsed time |+---------+-------+--------------+| 6       | 33    | 00:00:00     |+---------+-------+--------------+#出现表格就表示ok 

编辑定时任务crontab -e #添加第二条定时任务

/1 * sh db-next.sh

/1 * docker exec -u 33 next php occ files:scan --all

这下就已经完美实现同步了,zfile与nextcloud已经完全同步了

之前我在想,能不能把两个数据库共用一个本地文件,然后映射到俩容器里面去

zfile没有异议

nextcloud 有异议,他觉得不安全,权限太大 哈哈哈哈,好吧就这样吧

bey!

相关文章
|
搜索推荐 数据挖掘
伙伴云「页面」上线!网站、博客、资源库、文档、周报,拖拽即刻实现
一年来,伙伴云收到了许多用户对于仪表盘升级的期待,以及对新功能规划的询问。经过千百次调研、开发、内测,我们开发了一款页面构建引擎,Ta既提供了灵活的可定制性,也不像网页设计器晦涩难懂,且具有丰富的数据展现能力。
169 0
|
安全 关系型数据库 Linux
一文教你搭建个人网盘filerun,拥有私人文件服务器
一文教你搭建个人网盘filerun,拥有私人文件服务器
一文教你搭建个人网盘filerun,拥有私人文件服务器
|
Python
自动迁移百度网盘文件到阿里网盘,告别小水管
自动迁移百度网盘文件到阿里网盘,告别小水管
14123 1
自动迁移百度网盘文件到阿里网盘,告别小水管
|
17天前
|
存储 PHP 对象存储
开源免费的图床源码整理汇总-个人自用图床相册程序推荐
开源免费的图床源码整理汇总-个人自用图床相册程序推荐
46 0
|
6月前
|
前端开发 数据库
基于jeecgboot的个人网盘功能开发(二)
基于jeecgboot的个人网盘功能开发(二)
48 0
|
4月前
|
数据采集 敏捷开发 数据挖掘
阿里云云效产品使用合集之需要外出差的人员访问代码库,可以通过什么方式进行访问
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
存储 Web App开发 自然语言处理
免费可二次开发的私有网盘开源项目(筛选2024年仍活跃发版)
阿里最新开源大模型通义千问Qwen2性能大幅提升,支持128K tokens,免费开放,有望推动企业数字化转型。然而,中文互联网封闭趋势可能导致优质语料减少,影响模型效果。未来大模型发展可能依赖技术大厂和私有语料结合。文中列举了2024年活跃的开源私有网盘项目,如Syncthing、AList、Nextcloud等,为企业内部文档管理和知识库建设提供选择。
|
6月前
|
存储 对象存储
基于jeecgboot的个人网盘功能开发(三)
基于jeecgboot的个人网盘功能开发(三)
112 2
|
安全 数据管理 数据安全/隐私保护
PDS实现企业网盘搭建心得体会
在试用基于PDS实现企业网盘搭建的过程中,我发现这是一个强大而灵活的解决方案,可以满足企业对于数据管理和共享的各种需求
93 2
|
6月前
|
移动开发 前端开发
基于jeecgboot的个人网盘功能演示系统发布
基于jeecgboot的个人网盘功能演示系统发布
49 0
下一篇
无影云桌面