ZFILE一款开源的文件目录挂载程序以及管理脚本

-----水文章~------

网上关于zfile的教程是一大把啦,今天来水一下文章。我自己是从这个程序的1.2.1版本开始使用的。本教程可能会带有自己的一些理解在里头;如果有杠精都是你对,你说的都对。

img

项目介绍

项目地址:https://github.com/zhaojun1998/zfile

官方文档:https://docs.zfile.vip

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

  • 文件夹密码
  • 目录 README 说明
  • 文件直链(短链,永久直链,二维码)
  • 支持在线浏览文本文件, 视频, 图片, 音乐. (支持 FLV 和 HLS)
  • 图片模式
  • Docker 支持
  • 隐藏指定文件夹(通配符支持)
  • 自定义 JS, CSS
  • 自定义目录 README 说明文件和密码文件名称
  • 同时挂载多个存储策略
  • 缓存动态开启, 缓存自动刷新 (v2.2 及以前版本支持)
  • 全局搜索 (v2.2 及以前版本支持)
  • 支持 S3 协议, 阿里云 OSS, FTP, 华为云 OBS, 本地存储, MINIO, OneDrive 国际/家庭/个人版/世纪互联版/SharePoint, , 七牛云 KODO, 腾讯云 COS, 又拍云 USS.

### 安装教程:

## Linux

### 安装依赖

# CentOS系统
yum install -y java-1.8.0-openjdk unzip ##安装jdk1.8和unzip

# Debian/Ubuntu系统
apt update
apt install -y openjdk-8-jre-headless unzipCopy to clipboardErrorCopied  ##安装jdk1.8和unzip

### 下载项目

#### 安装说明

下面命令中第一行表示默认安装到用户目录下: ~/zfile 下。

对于 root 用户, ~ = /root, ~/zfile 表示在 /root/zfile 路径下。

对于其他用户, ~ = /hone/用户名 表示在 /home/用户名/ 路径下。如对于 oracle 用户, ~/zfile 则表示安装在 /home/oracle/zfile 下。

如需更改安装路径, 请自行修改,如 export ZFILE_INSTALL_PATH=/data/zfile,表示安装在 /data/zfile 路径下。

export ZFILE_INSTALL_PATH=~/zfile  ##设置zfile安装路径为:~/zfile
mkdir -p $ZFILE_INSTALL_PATH && cd $ZFILE_INSTALL_PATH  ##创建zfile安装目录,进入安装目录
wget https://c.jun6.net/ZFILE/zfile-release.war ##下载程序源代码
unzip zfile-release.war && rm -rf zfile-release.war ##解压压缩包和删除压缩包
chmod +x $ZFILE_INSTALL_PATH/bin/*.shCopy to clipboardErrorCopied ##赋予启动脚本命令

### 常用命令

以下为默认未修改安装路径下的情况,如修改了安装路径请自行更改命令所在路径。

 ~/zfile/bin/start.sh       # 启动项目
 ~/zfile/bin/stop.sh        # 停止项目
 ~/zfile/bin/restart.sh     # 重启项目Copy to clipboardErrorCopied

### 更新方式

如果没修改过安装路径,则停止程序后,删除安装文件夹即可,默认命令为:

(如修改过安装路径,则替换下方命令中的 ~/zfile 部分为你的安装路径即可)

# 停止程序
~/zfile/bin/stop.sh
# 删除安装文件夹 
rm -rf ~/zfileCopy to clipboardErrorCopied
# 重新下载安装最新版
export ZFILE_INSTALL_PATH=~/zfile
mkdir -p $ZFILE_INSTALL_PATH && cd $ZFILE_INSTALL_PATH
wget https://c.jun6.net/ZFILE/zfile-release.war
unzip zfile-release.war && rm -rf zfile-release.war
chmod +x $ZFILE_INSTALL_PATH/bin/*.shCopy to clipboardErrorCopied

------

## Windows

### 安装依赖

安装 JDK8, 并配置环境变量, 可参考: https://jingyan.baidu.com/article/ce09321b85e8d62bff858f93.html

### 下载项目

下载文件 https://c.jun6.net/ZFILE/zfile-release.jar

### 启动项目

然后在文件所在路径下, 使用 cmd 执行命令 (不支持 powershell):

# 不可关闭命令行,关闭即停止程序,或使用 ctrl + c 命令停止程序
java -Dfile.encoding=utf-8 -jar -Dserver.port=8080 .\zfile-release.jarCopy to clipboardErrorCopied

如需要修改配置文件, 可去 Github 复制一份配置文件, 点击进入, 放到 jar 文件同路径即可.

### 更新方式

重新下载文件 https://c.jun6.net/ZFILE/zfile-release.jar 后,再次启动即可。

------

## Docker

### 启动命令

镜像地址为:https://hub.docker.com/r/zhaojun1998/zfile

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

docker run -d --name=zfile --restart=always \
    -p 8080:8080 \
    -v /root/zfile/db:/root/.zfile/db \
    -v /root/zfile/logs:/root/.zfile/logs \
    zhaojun1998/zfileCopy to clipboardErrorCopied

### 更新方式

停止并删除现有 docker 容器,及删除本地镜像后,重新执行上方命令即可。由于已经映射出数据库文件路径 /root/zfile/db 和日志文件路径 /root/zfile/logs,所以直接启动即可。 但为了保险起见还是建议启动前备份一份数据库文件到其他位置,再尝试启动,谨防数据丢失。

安装完成之后,启动zfile

image-20220418211115532

看到OK并非一定启动了,如果是linux系统必须看到pid才证明正常启动了。

安装完成之后访问:·http://ip+8080`,进入默认安装界面。(记得放行服务器的8080端口哦,默认是8080端口)

进入安装界面。信息根据自己实际填写、

image-20220418211153870

安装完之后,自动跳回到本地。而后会提示你创建新的驱动器。

image-20220418211231712

输入你刚刚设置的后台账号密码

image-20220418211314667

在这里添加新的存储(驱动器)

选择你想添加的存储策略。

这里选择onedrive。

image-20220418211525463

每个配置的具体功能作者都贴心的在右侧添加了配置提示信息。

配置文件修改

进入zfile文件夹

zfile/WEB-INF/classes/application.yml 

打开application.yml文件

zfile:
  debug: false  #调试模式
  webdav: false #开启webdav
  directLinkPrefix: directlink  #直连默认前缀(注意:这个前缀是在域名/前缀/驱动器号/文件路径。因为多盘的原因,所以直连会包含驱动器号。)
  log:
    path: ${user.home}/.zfile/logs  #日志路径
  db:
    path: ${user.home}/.zfile/db/zfile #内置数据库路径
  tmp:
    path: ${user.home}/.zfile/tmp   #临时文件夹
  cache:
    auto-refresh:
      interval: 1  #缓存检测时间
    timeout: 1800  #缓存刷新时间
  constant:
    readme: readme.md  #默认文档展示文件名
    password: password.txt #默认密码文件名
  preview:
    audio:
      maxFileSizeMb: 5  #音频最大在线浏览大小
    text:
      maxFileSizeKb: 512 #txt文件最大在线浏览大小
  onedrive:  #以下是onedrive的客户端id和秘钥以及重定向地址还有api权限,不懂的别去动哦
    clientId: 09939809-c617-43c8-a220-a93c1513c5d4
    clientSecret: _l:zI-_yrW75lV8M61K@z.I2K@B/On6Q
    redirectUri: https://zfile.jun6.net/onedrive/callback
    scope: offline_access User.Read Files.ReadWrite.All
  onedrive-china:  #以下是世纪互联onedrive的客户端id和秘钥以及重定向地址还有api权限,不懂的别去动哦
    clientId: 4a72d927-1907-488d-9eb2-1b465c53c1c5
    clientSecret: Y9CEA=82da5n-y_]KAWAgLH3?R9xf7Uw
    redirectUri: https://zfile.jun6.net/onedrive/china-callback
    scope: offline_access User.Read Files.ReadWrite.All

server:
  port: 8080  #默认端口
  servlet:
    context-path: ''
  tomcat:
    threads:
      max: 20
  compression:
    enabled: true

spring:
  h2:
    console:
      settings:
        web-allow-others: true
      path: /h2-console
      enabled: ${zfile.debug}
  datasource:
    # h2 内存数据库 配置
    driver-class-name: org.h2.Driver
    url: jdbc:h2:${zfile.db.path}
    username: zfile
    password: 123456

    # MySQL 配置  #如果需要使用MySQL的小伙伴可以把上面那个内置数据库的配置加上注释
  #    driver-class-name: com.mysql.jdbc.Driver
  #    url: jdbc:mysql://127.0.0.1:3306/zfile?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
  #    username: root
  #    password: 123456
  jackson:  #程序时区设置
    date-format: yyyy-MM-dd HH:mm
    time-zone: GMT+8
  jpa:
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        format_sql: false
    show-sql: false
    generate-ddl: true
    defer-datasource-initialization: true
  profiles:
    active: prod

  # 初始化数据导入
  sql:
    init:
      continue-on-error: true
      mode: always
      data-locations: classpath*:db/data.sql
      encoding: utf-8

显示设置配置

image-20220418212717572

具体看右侧小提示

这边提供一个自定义css来美化zfile的默认风格哦,如果有更好的也可以推荐给我用用。

body {
background-image: url(https://drive.tefuir0829.cn/d/yyds/img-tefuir/1.jpg) !important;#背景图片可以自己改哦
background-position: center bottom !important;
background-size: cover !important;
background-attachment: fixed !important;
background-repeat: no-repeat !important;}

/*导航 透明*/
.zfile-header[data-v-5fca0787] {background: rgba(255, 255, 255, 0.6) !important;}
/*选择器透明*/
.el-input__inner {background-color: rgba(255, 255, 255, 0.6) !important;}
.el-select-dropdown {background-color: rgba(255, 255, 255, 0.9) !important;}
/*列表 透明*/
.el-table, .el-table__expanded-cell {
    background-color: rgba(255, 255, 255, 0.6) !important;}
.el-table th, .el-table tr {
    background-color: rgba(255, 255, 255, 0) !important;}
/*列表 字体颜色*/
.el-table thead {
    color: rgba(0, 0, 0) !important;}
.el-table {
    color: rgba(0, 0, 0) !important;}
/*列表按钮颜色*/
.operator-btn[data-v-39c0e91d] {
    color: rgba(0, 0, 0) !important;}
.operator-btn[data-v-2ebcb9db] {
    color: rgba(0, 0, 0) !important;}
/*文档区透明*/
.el-card {
    background-color: rgba(255, 255, 255, 0.6) !important;}
/*导航字体颜色*/
.el-breadcrumb__item:last-child .el-breadcrumb__inner, .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover, .el-breadcrumb__item:last-child .el-breadcrumb__inner a, .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover {
    color: rgba(0, 0, 0);}
/*右键 透明*/
.v-contextmenu {
    background-color: rgba(255, 255, 255, 0.9) !important;}
/*公告 透明*/
.alert {
    background-color: rgba(255, 255, 255, 0.9) !important;
    color: rgba(0, 0, 0) !important;}

zfile管理一键脚本

wget https://raw.githubusercontent.com/iwayen/zfile-cli/master/zfile.sh
chmod +x zfile.sh
bash zfile.sh

image-20220418214936186

可根据个人需求使用。本脚本由@wayen大佬提供。

最后修改:2022 年 06 月 16 日
如果觉得我的文章对你有用,请随意赞赏