首页 > 其他分享 >云盘转NAS,云盘转化为本地磁盘,跨平台跨设备同步-CarlZeng

云盘转NAS,云盘转化为本地磁盘,跨平台跨设备同步-CarlZeng

时间:2023-11-12 09:44:05浏览次数:32  
标签:CarlZeng 云盘 NAS 跨平台 https -- docker aria2 下载

title: 云盘转NAS,云盘转化为本地磁盘,跨平台跨设备同步-CarlZeng
tags: [NAS,云盘,下载,docker,Nginx Proxy Manager]
categories: 
        - 云盘
        - NAS
        - Docker
        - Nginx Proxy Manager
date: 2023-08-26 21:04:00

背景

对软路由硬件J4125之类的痴迷,想要它虚拟出另外一个系统实现NAS本地云存储的功能,
可是碍于广大群众对这种集成方案的实用性、稳定性、低维护性产生实践中的顾虑和问题,更倾向于独立的NAS硬件。
我也一直在思考NAS在日常生活中除了备份旧文件用处的其他实用性考究。
(20231004更新:发现NAS收集展示15年+的个人所有照片后,赞赞赞)

音乐文件的跨平台同步需求越来越急切。各大平台对音乐版权的收紧,使得我不在寻找播放软件APP的解决方案,转而更希望保存我喜爱的歌曲。存储在网盘中不占用手机内存和电脑硬盘是个不错的选择(电影文件显然也是类似的)

介绍下载器Aria2c,开启无限制下载参数,为某网盘下载提速超6倍

思路

  1. 将 阿里云盘 开放出 WebDAV 服务

  2. 将 rclone 用于同步 电脑中 和 阿里云盘 中的文件和目录

  3. 将 nplayer 用于播放 WebDAV中的音乐(电影也是一样)
      安卓手机手机都可以的,电脑上用Potplayer之类的。

技术步骤汇总

  1. 工具#1: https://github.com/messense/aliyundrive-webdav

根据您平台的构架来选择不同的可执行文件(以我的MAC为例,下载:aliyundrive-webdav-v2.3.2.apple-darwin.tar.gz

1.1 解压缩后得到文件:aliyundrive-webdav

1.2 Terimal运行:

aliyundrive-webdav -r eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzYjg0YzM0OTczNjA0OTk4OTRjYjI3OWUzOTM1ZTA0OSIsImF1ZCI6IjczZTYxMTgzMWE3YzRkODdhYzQ5Yzg0ODFiZjlmMmM0IiwiZXhwIjoxNzAwNzI5MTM4LCJpYXQiOjE2OTI5NTMxMzgsImp0aSI6IjJjNDVlZDdhNWUyZjQxOTg5ZTk2NDA4NmQ1OTE1MzhiIn0.LcDVLaeqaQWpvE7eBbEv-KnA27JP6bmk7Rxw1vK6ZD3EqSGQuaH-DVE6lU8NneiN1h0z8mW1ImrkjFQ1234

如何获取这个refresh-token,作者在页面做了详细的说明:https://github.com/messense/aliyundrive-webdav。
实测也可以使用Chrome登录云盘后https://www.aliyundrive.com/drive/file/backup,
在Chrome > Application > Local Storage > share_token 中复制。

成功运行后的日志类似:

    2023-08-25T21:10:27.769474+08:00 INFO aliyundrive\_webdav::drive: refresh token succeed
    
    2023-08-25T21:10:30.984144+08:00 INFO aliyundrive\_webdav::drive: found default drive _drive\_id_\=71999\*\*\*\*
    
    2023-08-25T21:10:30.985527+08:00 INFO aliyundrive\_webdav::webdav: listening on http://0.0.0.0:8080

1.3 运行后WebDAV就启用了,可以通过Mac的Finder来验证:Finder > Go > Connect to Server

输入http://127.0.0.1:8080

在提示的用户名密码都输入:admin

  1. 工具#2:https://github.com/rclone/rclone

获取:根据您平台的构架来选择不同的可执行文件(以我的MAC为例,下载:rclone-v1.63.1-osx-arm64.zip)

2.1 解压缩后得到文件:rclone

2.2 Terimal运行配置(一次性):

rclone config
        name\> webdav
        Storage\> 47 url\> http://127.0.0.1:8080
        vendor> 6 user\> admin
        password: admin  

其他的参数都直接回车,默认即可。
第二步中的47指向webdav

47 / WebDAV
\ (webdav)

2.3 Terimal运行配置(日常同步):

    rclone lsd webdav:
            列出目录
    
    rclone ls webdav:
            列出根目录下所有文件
    
    rclone copy /Users/\*\*\*/MusicSyncCar webdav:MusicSyncCar
    
    
    rclone sync \--interactive /Users/\*\*\*/MusicSyncCar webdav:MusicSyncCar
            works great, will ask for new files to sync
    
    rclone sync /Users/\*\*\*/MusicSyncCar webdav:MusicSyncCar
            works great too, without any question, but minor error.  

详细的说明:https://rclone.org/docs/
如下(注意下面列子的remote就是webdav的创建时的名称)

rclone uses a system of subcommands. For example

rclone ls remote:path                                   # lists a remote
rclone copy /local/path remote:path                     # copies /local/path to the remote
rclone sync --interactive /local/path remote:path       # syncs /local/path to the remote
  1. 工具#3:Nplayer安卓版

直接把链接中的apk下载后,在手机中安装添加WebDAV, 主要的参数:

主机:选择运行aliyundrive-webdav的电脑的局域网IP地址(http://192.168.6.221:8080

用户名/密码:admin

端口:8080

如何获取这个阿里云盘refresh-token

可以用于影视或TVBOX中提示时的Refresh_Token

  1. 浏览器打开并登录阿里云https://www.aliyundrive.com/drive/
  2. 在Chrome > Application > Local Storage > share_token 中复制
    或者打开console(开发者工具中)运行下面的JS
        JSON.parse(localStorage.getItem('share_token')).access_token

此方法已失效,最新的必须扫码登录或短信验证,后用工具显示:
方法一
https://aliyundriver-refresh-token.vercel.app/
具体的项目地址:https://github.com/itxve/aliyundriver-refresh-token

方法二:
用Webdav那个安卓APP,登录阿里云盘;设置里面有可以复制Refresh_Token的地方

二者都是通过API的方式获取的Refresh_Token

背景知识

NAS是网络接入存储(Network Attached Storage)的简称,也就是存储系统直接接入网络,通过网络交换机,将服务器与存储连接在一起,用户可以通过TCPIP协议访问数据,并通过标准的业界文件共享协议,如CIFS、NFS来实现目录级的共享。

感谢

感谢所有以上工具的作者与参与者,感恩。

后续

文章分享没有几天,聪明的朋友就寻出了不便之处:上面这个方案,需要电脑上开启WebDAV服务然后手机才能连接上去播放媒体文件等访问网盘的内容。

那么有没有办法直接把WebDAV架设在手机上呢?这样就不需要一台‘服务器’开着。答案是有的:

https://github.com/eritpchy/aliyundrive-webdav/releases

下载这个apk文件net.xdow.webdavaliyundriver.3.1.0.release.apk

(视频介绍:通过安卓手机启用阿里云盘webdav服务,实现把云盘资料挂载为本地硬盘使用,无压缩播放原画质视频

安装到安卓手机上,打开这个APP,设置好Refresh_token(扫码获取),手机上点击启动WebDAV服务。

在切换到手机上nplayer,同理,建立新的连接到手机本机(127.0.0.1)8080端口上的WebDAV即可。



NAS安装Aria2下载服务器

J4125的下载器?如何提交远程下载任务?应用baidu网盘下载
https://p3terx.com/archives/aria2-frontend-ariang-tutorial.html

[Aria2 Pro Docker](https://hub.docker.com/r/p3terx/aria2-pro)
会在Mac的docker中开启两个container,可是6800怎么也无法映射出来。
各种尝试以后还是最终放弃。

http://127.0.0.1:8080/#!/downloading    
终于找打一个可用的+运行在docker里面的[aria2](https://hub.docker.com/r/wahyd4/aria2-ui)

docker run -d --name aria2-ui -p 8080:80 -v $PWD/aria2-downloads:/data wahyd4/aria2-ui


#这样运行后
#Aria2: http://yourip/ui/
#FileManger: http://yourip
#Rclone: http://yourip/rclone
#Please use admin/admin as username and password to login for the first time.

考虑到大文件下载还是放到NAS的大容量固态硬盘中存储,还是把这个aria2安装到docker中去,
用web的形式打开管理界面,查询或者提交下载任务。

更改 User Agent from
aria2/1.36.0
to
pan.baidu.com

docker run -d --name aria2-ui -p 8080:80 -v /volume2/KingchuxingSSD512G/Download:/data wahyd4/aria2-ui

首先在控制面板——终端机和SNMP里面启用SSH功能

紧接着输入sudo -i回车,获取root权限,这一步还要再一次输入密码,也是不显示

接下来输入docker pull XXX/XXX(X代表的就是你索要拉取的镜像名称),例如我要拉取jellyfin的docker镜像,就输入docker pull jellyfin/jellyfin即可,然后回车,接下来你会发现镜像开始下载了

https://www.moewah.com/archives/3147.html
docker run -d --name aria2-webui -p 8080:80 -p 6800:6800 -v /volume2/KingchuxingSSD512G/Download:/data onisuly/aria2-with-webui

成功了 http://192.168.6.203:8080/#!/downloading 测试提交某度网盘的5G+文件下载,正常龟速90+KB/s
总结:
    请忽略上面的其他的docker镜像, NAS的SSH中用 
sudo docker pull onisuly/aria2-with-webui
    然后
sudo docker run -d --name aria2-webui -p 8080:80 -p 6800:6800 -v /volume2/KingchuxingSSD512G/Download:/data onisuly/aria2-with-webui

实践多任务从某度网盘下载NS大游戏文件,下载列表惊讶的发现(与默认的龟速相比),持续地平均速度竟然达到了860KB/s
1. 用浏览器插件中的API下载(适用于 IDM,NDM 以及浏览器自带下载)获取网盘中的链接
2. 设置(Settings)》Aria2 Setting 〉 Http/FTP/SFTP Settings 》 Max Connection Per Server
设置为10,单个server10个链接;正在测试调整为15,持续观察新任务的下载速度。

远程提交下载任务至NAS

Nginx Proxy Manager(NPM)反代aria2的下载工具至外网管理
人在宽带的外网时候可以提交下载任务至NAS,这样可以不受地理位置限制的下载,充当下载服务器的目的。
通过Nginx Proxy Manager来反代两个地址

  1. http://192.168..:8080
    这是aria2的web面板UI(AriaNg)的本地管理地址,把这个地址反代到外网比如 https://@.@@@@@.com:port
    这样就可以带SSL证书的情况下原创访问aria2面板。
    NPM中新增上面这样一条的反代记录
    http://192.168..:8080 -> https://@aria@.@@@@@.com:port
    Note: 这个8080端口是从docker中映射出来的, 下面的6800端口也是同样道理
    这个面板也可以使用网络上公开的公共的面板,因为它只是一个UI。
    真正的下载服务器服务是RPC的服务信息。
  2. http://192.168..:6800/jsonrpc
    这是aria2后台服务的地址,Aria2 PRC Address,协议http,Aria2 RPC Http Request Method POST(默认)
    在第一步的外网面板地址(https://@.@@@@@.com:port)中配置Aria2 RPC信息,也必须是https协议(已被默认强制)
    NPM中新增上面这样一条的反代记录
    http://192.168..:6800/jsonrpc -> https://rpc@.@@@@@.com:port

这样2条反代配置以后,返回第一步的Aria2面板(AriaNg)设置RPC地信息为反代以后的https信息(地址和端口), 即可
实现外网时也可提交下载任务至NAS。

RPC下载的'保存路径'

油猴插件的发送至RPC非常方便,然后速度也快也稳定不断流(夸克480KB/s),可是发现RPC的文件下载后在docker的映射目录找不到。
检查PRC的详细信息才知道,原来文件信息携带了Windows的目录信息 D:@@@.nsp,这直接导致NAS的docker下载成功后,文件根本找不到。
估计停留在了内存里面了,也不知道怎么取下来

标签:CarlZeng,云盘,NAS,跨平台,https,--,docker,aria2,下载
From: https://www.cnblogs.com/backuper/p/17826778.html

相关文章

  • docker 跨平台构建镜像
    我们在开发环境构建的镜像在生产环境大多不可用,我们在开发中一般使用Windows或者MAC系统,部署多半是linux环境。那么这篇文章能帮到你。首先首先你需要有一个Dockerfile文件。举例:这里以一个python项目举例FROMpython:3.10-slimWORKDIR/appCOPYrequirements.txtre......
  • 深入探讨Vue.js核心技术及uni-app跨平台开发实践
    Vue.js是一款流行的JavaScript框架,用于构建交互性强、响应式的用户界面。而uni-app是一个基于Vue.js的跨平台应用开发框架,允许开发者使用Vue.js的语法编写一次代码,然后将其部署到多个平台,如iOS、Android、Web等。本文将深入探讨Vue.js的核心技术,并介绍如何利用uni-app进行跨平台实......
  • 有哪些app开发工具支持跨平台开发?
    跨平台开发是指使用一种或多种工具和技术来开发可以在多个平台上运行的应用程序。以下是一些支持跨平台开发的APP开发工具:Flutter:由Google开发的UI工具包,可用于在iOS、Android和Web上构建美观的原生用户界面。使用单一代码库,开发人员可以创建高性能、流畅的应用程序。ReactNative:......
  • 移动跨平台框架Flutter详细介绍和学习线路分享
    Flutter简介Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。我们兼容滚动行为、排版、图标等方面的差异。在全世界,Flutter正在被越来越多的开发者和......
  • 小程序底层技术机制解读 - 跨平台兼容性
    小程序是一种流行的移动应用形式,它的跨平台兼容性是其吸引力之一。在本文中,我们将深入探讨小程序的跨平台兼容性,以及如何利用这一特性来构建跨平台的应用程序。什么是跨平台兼容性?跨平台兼容性是指一个应用程序可以在多个不同的操作系统和设备上运行,而不需要进行大规模的修改或重新......
  • UniApp实战开发指南:构建跨平台应用的终极选择【UniApp实战】
    UniApp是一个强大的开发框架,可让开发者使用Vue.js构建跨平台应用。本文将介绍UniApp的核心概念和技术深度,并通过一个实例演示如何使用UniApp开发一个简单的待办事项应用。1.介绍UniAppUniApp是DCloud推出的一款基于Vue.js的跨平台开发框架。它允许开发者使用一套代码构建同时运行......
  • rust ui lib 跨平台ui框架
    部分条目未更新,请自行到项目主页查看。框架StarsIssue活跃程度版本TauriStarIssueegui+bevyStarIssueSlintStarIssueIcedDioxusGTKFlutter框架网页手机PC嵌入式额外语言Taurieguibe......
  • C#winform软件实现一次编译,跨平台windows和linux兼容运行,兼容Visual Studio原生界面Fo
    一、背景:微软的.netcore开发工具,目前来看,winform界面软件还没有打算要支持linux系统下运行的意思,要想让c#桌面软件在linux系统上运行,开发起来还比较麻烦。微软只让c#的控制台软件支持在linux运行。二、解决方案:我想到的一个方案是自定义封装软件的System.Windows.Forms组件,把......
  • Unity 跨平台底层如何处理C#代码
    在面试中,我们经常会被问到Unity的底层是如何处理C#,本节给通过一下3个点来给大家详细的分析这个问题:(1)C#的发展历史;(2)Unity为什么用C#;(3)il2cpp解决了什么问题; 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大......
  • 阿里云盘扩容
    parted-lfdisk-ludf-hTfdisk-ludf-hTtypegrowpart||yuminstall-ycloud-utils-growpart#硬盘分区要注意LC_ALL=en_US.UTF-8growpart/dev/vdb1df-Thresize2fs/dev/vdb1df-Th https://help.aliyun.com/zh/ecs/user-guide/extend-the-partitions-and-file-syste......