注意:webdav不支持更新文件的修改时间,这就废了双向同步应用了。rclone客户端为兼容这个特性,还有专门参数支持。
rclone serve webdav
通过 rclone serve webdav oneDrive:path 实现让 webdav client 直接访问到 oneDrive:path,同时,rclone也支持本地文件系统(rclone config 中选择 33 / Local Disk https://rclone.org/local/),也就是通过rclone 实现了自建webdav server;还有dlna,ftp,sftp,s3,restic(restic’s REST API)。
rclone.conf的内容如下:
[Local]
type = local
rclone lsd Local:c:\ 可以访问整个文件系统。通过 rclone serve webdav Local:C:\inetPub\WebDavFiles 启动,限制WebDav服务器的根目录为C:\inetPub\WebDavFiles
rclone.exe serve webdav Local:C:\inetPub\WebDavFiles --config C:\inetEnv\Rclone\Rclone.conf --copy-links --log-file C:\inetTmp\nssmLogs\Rclone.log --etag-hash auto --addr :8000 --htpasswd C:\inetEnv\Rclone\htpasswd.conf
--htpasswd /path/to/htpasswd 身份验证文件,在windows 下使用htpasswd:
- 方法1:从 [https://www.apachelounge.com/download/] 下载zip包,后到 bin 目录下运行
htpasswd -v验证 - 方法2:在线htpasswd生成工具:[https://www.lddgo.net/encrypt/htpasswd]
注意:不支持用户主目录,所有用户都是在C:\inetPub\WebDavFiles
install.bat
@echo off
rem nssm.exe在同一个目录中
call :install Rclone
rem WebDavFiles目录、logDir目录:要有Network Service的NTFS权限。 %~dp0logs C:\inetTmp\RDSLogs
cacls %logDir% /t /e /g "NT AUTHORITY\NETWORK SERVICE:F"
cacls %~dp0 /t /e /g "NT AUTHORITY\NETWORK SERVICE:F"
goto batEnd
:install
set logDir=C:\inetTmp\nssmLogs
"%~dp0nssm.exe" install "%1" "%~dp0%1.exe" "serve webdav Local:C:\inetPub\WebDavFiles\liang --config C:\inetEnv\Rclone\Rclone.conf --copy-links --log-file %logDir%\%1.log --addr 127.0.0.1:8000 --htpasswd C:\inetEnv\Rclone\htpasswd.conf"
"%~dp0nssm.exe" set "%1" DisplayName "%1 WebDav Server"
REM "%~dp0nssm.exe" set "%1" Description "%1 Server"
"%~dp0nssm.exe" set "%1" Start SERVICE_AUTO_START
"%~dp0nssm.exe" set "%1" ObjectName NetworkService
"%~dp0nssm.exe" set "%1" Type SERVICE_WIN32_OWN_PROCESS
"%~dp0nssm.exe" set "%1" AppThrottle 1500
"%~dp0nssm.exe" set "%1" AppExit Default Restart
"%~dp0nssm.exe" set "%1" AppRestartDelay 0
"%~dp0nssm.exe" set "%1" AppStdout "%logDir%\%1_out.log"
"%~dp0nssm.exe" set "%1" AppStderr "%logDir%\%1_err.log"
goto :eof
:batEnd
"%~dp0nssm.exe" edit Rclone
"%~dp0nssm.exe" start Rclone
nginx 配置
location / {
# proxy_request_buffering on(默认):NGINX 会在转发请求前,先将整个请求体读完并缓存在本地。off:NGINX 会边读取请求体边转发到后端,即流式转发。
proxy_request_buffering off;
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
openList 中的 webdav
在openList中,也支持本地文件系统(存储中选择本机存储),同时,也支持开启WebDAV client访问。先在用户中开启webdav读取与管理,及其他管理权限(增删改) ,再通过 http://localhost:5244/dav/ 访问。
另外,openList中也支持开启ftp/sftp client访问,先在用户中开启ftp读取与管理,及其他管理权限(增删改),再到config.json中开启配置。
- 官方文档:FTP配置
openList简单使用
第一次启动命令:openlist.exe server ,会创建必要配置文件,创建用户admin,显示密码。
Successfully created the admin user and the initial password is: oeKlMMU1
start HTTP server @ 0.0.0.0:5244
Ctrl+C 退出,后面就可以使用:openlist.exe start/stop 了
在浏览器中访问 http://localhost:5244 ,登陆后添加存储,每个网盘所需要内容不同,见官方文档
- openList在访问WebDav服务器,使用的UA是 “Go-http-client/1.1”
openlist 最大意义:不用安装那些网盘客户端,但只能下载、上传、在线视频播放。没有同步功能,所以,又有很多三方工具了。
openList.bat:双击启动或关闭
@echo off
set Console=D:\CloudFiles\Sysinternals\Console
%Console%\pslist64.exe -nobanner openlist
if %errorlevel% equ 0 (
%~dpn0.exe stop
) else (
%Console%\RunHiddenConsole.exe %~dpn0.exe start
timeout 10 /NOBREAK
start http://localhost:5244
)
发表回复