文章目录

  • 前言
  • 准备工作
  • 一、将硬盘挂载至本地webdav服务
    • 1. 确认自己硬盘路径
    • 2. webdav 服务搭建
      • 1)caddy下载
      • 2)部署
      • 3)运行测试
  • 二、将wedav挂载至rclone
  • 三、将rclone挂载到Termux

前言

这几天陆陆续续给Termux添加了好多功能进去,然后问题就来了,手机64G存储空间的小身板是真的不够用,于是给手机OTG了一块硬盘,然后,Termux竟然需要root权限才能读取/mnt外设挂载,然而在Termux上使用root权限运行服务可能出现一些奇奇怪怪的问题,比如,nginx使用root运行后可以读取挂载的硬盘,却不能读取/sdcard了,,,奇奇怪怪的问题层出不穷,而mount总是找不到设备,无奈只好走迂回路线:使用root权限将/mnt挂载到webdav服务,再使用rclonewebdav挂回Termux,其他服务就可以免root读取硬盘内容了。

准备工作

  1. Termux环境,不用多说。
  2. root环境,手机无法root的这篇文章可以跳过了。
    pkg install tsu       #安装依赖
    tsu                 #使Termux获取root,权限,授权弹窗选择永久授权
    exit                #授权后退出root模式,后续使用sudo即可
    
  3. 一块移动硬盘(没有的内存卡U盘也凑合),提前刷好格式,看看自己的的手机支持的文件系统,在支持的情况下优先选择NTFS,其次exFAT,都不支持最后选择FAT32
  4. 一个拓展坞或者OTG转换头,能将硬盘连至手机即可。

一、将硬盘挂载至本地webdav服务

Linux上搭建wedav服务的软件有很多,nginx,apache,webdav_server,caddy等,这里以caddy为例,问就是web界面好看,其他方式自己探索。

1. 确认自己硬盘路径

将硬盘接入手机,确保出现挂载提醒,然后在Termux中输入:

sudo ls /mnt/media_rw


/mnt/media_rw/635D-7F75即为硬盘路径,root用户查看硬盘文件试试:

sudo ls /mnt/media_rw/635D-7F75


可以查看。

非root再查看试试:

ls /mnt/media_rw/635D-7F75


没有权限。

2. webdav 服务搭建

1)caddy下载

官方下载地址:https://caddyserver.com/download

系统架构选择Linux arn64, 插件选择mholt/caddy-webdav,其他插件不用问,以后有需要其他插件的话可以使用caddy的内置命令来添加。

2)部署

在Termux的home目录下创建caddy工作目录,并将刚刚下载的文件拷贝进去:

mkdir ~/caddy &&mv /scard/download/caddy_linux_arm64_custom ~/caddy

更改执行文件名为caddy

cd ~/caddy &&mv caddy_linux_arm64_custom caddy

并赋予其执行权限:

chmod +x caddy

配置管理密码:

./caddy hash-password --plaintext 123456


拷贝生成的密文密码。

编写配置文件:

vim ~/caddy/Caddyfile

添加以下内容:

{order webdav before file_server
}
# 使用一个WebDav服务测试,以开放5050端口为例,可以自行修改
:5050 {# 设置可访问目录,写刚刚拿到的硬盘路径root * /mnt/media_rw/635D-7F75# 信息流编码,默认就好encode gzip# 生成123456(此处明文密码自己设置)的密码 caddy hash-password --plaintext 123456# 下面的username为用户名(可自行更改),后面的长字符串为使用上面命令生成的加密密码# 留空则无需登录信息basicauth {yibingyihan xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}# WebDAV访问相关,建议保持默认route {rewrite /webdav /webdav/webdav /webdav/* {# 访问后缀,建议默认,web浏览不能加,客户端挂载必须加prefix /webdav}# 设置HTTP文件服务,可以在浏览器中查看下载文件(浏览器中只能查看下载,无法上传删除,配合无密码设置,可以搭建下载站)file_server browse}
}

保存配置文件。

3)运行测试

cd ~/caddy &&sudo ~/caddy/caddy run          #前台运行,测试时使用
cd ~/caddy &&sudo ~/caddy/caddy start       #后台运行,实际运行环境使用

本机浏览器访问:http://localhost:5050

二、将wedav挂载至rclone

Rclone是一个命令行程序,用于管理云存储上的文件。他打包了各大供应商云存储的接口提供统一的访问界面。rclone支持40多种云存储产品,包括对象存储、企业和消费者文件存储、服务以及标准传输协议。所以除了本文所说的挂载本地webdav服务,你还可以挂载其他云服务,例如OneNote,Google Drive,SMB等,具体支持列表见官方文档。

安装命令:

pkg install rclone

开始配置:

rclone config


Storage: 选择rclone要挂载的网络磁盘类型,类型很多,输入对应序号即可,这里我们以webdav举例,所以是46;

url:服务器地址,记得加上访问后缀:http://localhost:5050/webdav/;

vendor:服务商,因为是我们自己搭建的,所以选择other;

设置完会弹出配置确认,确认无误q退出就行了。
rclone连接读取一下webdav内容试试:

rclone lsd test:     #lsd 列出指定目录下的所有一级子目录名称,test为刚刚设置的配置名,/file为webdav内部存储路径
rclone ls test:/file    #ls 列出指定目录下所有文件,包括一级子目录以及子目录的子目录,文件多及其不建议使用
rclone lsl test:/flie   #lsl 作用范围同ls,列出指定目录下的所有子目录内文件的名称及其大小修改时间等信息,同样不建议使用


挂载成功。

三、将rclone挂载到Termux

此操作需要依赖fusermount, 但Termux官方库里并没有,所以需要自己手动编译构建arm64 版本的,所幸,前人栽树后人乘凉,尝试了一上午编译失败后,总算是让我在网上找到了别人编译后的版啦~~啦! 两个下载方式提供给大家:

有积分的施舍点积分:csdn下载地址
没积分的赏赐个关注:XDA下载地址

下载好的文件解压,移动到$PREFIX/bin并重命名为fusermount,之后赋予其执行权限:

unzip -d /sdcard/download/ /sdcard/download/fusermount_Termux_arm64.zip
mv /sdcard/download/fusemount $PREFIX/bin/fusemount
chmod +x $PREFIX/bin/fusemount

因为要使用系统root权限,将fusermount链接到系统bin路径:

sudo ln -s /data/data/com.termux/files/usr/bin/fusermount /bin/fusermount

接下来使用sudo执行rclone mount挂载命令,先将配置文件链接到root用户目录下,不然无法加载配置的网络磁盘目录:

sudo mkdir -p /data/data/com.termux//files/home/.suroot/.config/rclone
sudo ln -s /data/data/com.termux/files/home/.config/rclone/rclone.conf /data/data/com.termux/files/home/.suroot/.config/rclone/rclone.conf

完整的挂载命令:

sudo clone mount test:/file /localfile/xxx --allow-other --attr-timeout 5m --vfs-cache-mode full --vfs-cache-max-age 24h --vfs-cache-max-size 10G --vfs-read-chunk-size-limit 100M --buffer-size 100M --daemo
命令参数 命令解析
rclone mount rclone 挂载命令
test:/file test为配置好的webdav配置名,:/file 是 webdav 路径
/data/wwwroot/xxx 为termux本地文件夹路径(建议为新建空目录)
–allow-other 允许非当前 rclone 用户外其它用户进行访问,必须项,不然非rooot用户无法访问
–attr-timeout 5m 文件属性缓存,(大小,修改时间等)的时间。如果手机配置比较低,建议适当提高这个值,避免过多内核交互,降低资源占用。
-vfs-cache-mode full 开启Termux文件缓存,可减少 rclone 与 API 交互,同时可提高文件读写效率
–vfs-cache-max-age 24h Termux文件缓存时间,这里设置 24 小时,如果文件很少更改,建议设置更长时间
–vfs-cache-max-size 5G VFS文件缓存上限大小,根据自己使用情况设置
vfs-read-chunk-size-limit 100M 分块读取大小,这里设置的是100M,可提高文件读的效率,比如1G的文件,大致分为10个块进行读取,但与此同时API请求次数也会增多
–buffer-size 100M 内存缓存,如果您内存比较小,可降低此值,如果内存比较大,可适当提高
–daemon 指后台方式运行

挂载时最好新建挂载目录,示例:

rm -rf /sdcard/cloud &&mkdir /sdcard/cloud
sudo rclone mount test:/ /sdcard/cloud --allow-other --allow-non-empty --vfs-cache-mode writes

非root访问测试:

成功!

解除挂载:

通常情况,直接使用 umount 命令取消挂载即可:

sudo umount /sdcard/cloud        #/sdcard/cloud为挂载目录

如果提示磁盘繁忙那就先kill掉rclone进程,再取消挂载:

#kill杀掉进程
sudo pgrep 'rclone'|xargs kill -9
#再次取消挂载
sudo umount /path/to/local/mount

有待解决的问题     这样配置完成后是有一个问题的,那就是只有termux自己及内部服务才能访问挂载的文件夹(/sdcard/cloud)内的内容,其他软件包括系统的文件管理器看到的都是空目录,本来打算放弃这个方案,但是随后想想,本来就是只拿它来做服务器,供在那儿不动,也不需要什么别的软件访问外部存储,于是就释怀了,才将这篇文章写出来。   另外,当我写这篇文章时发现了一个magisk模块,据说能解决上述空目录问题,但是我试了几次没有刷入成功,不知道是不是安卓12版本的问题,有兴趣的可以去试试:使用教程,项目地址。我会尝试将他剖解移植到termux中,完成后我会在这篇文章更新,当然我想这应该属于有生之年系列了。


over!

webdav, samba, DLAN ······ 这些东西凑在一块,你能想到什么? 那不就是家庭流媒体库嘛? 《Termux打造家庭影音流媒体库中心》,我们下篇文章见!所以 有兴趣看官的赏个关注再走呗!


快速导航
        

Termux外置硬盘挂载——rclone WebDav 挂载网盘相关推荐

  1. 本地挂载网盘_Alist_RaiDrive_windows

    目录 一.下载安装Alist 二.启动登录Alist 三.挂载网盘 四.挂载到本地 五.开机自启动 一.下载安装Alist 安装地址:https://github.com/alist-org/alis ...

  2. 扩大储存空间无需硬盘,挂载网盘作为本地磁盘

    电脑使用后存储空间越来越小,你可以通过挂在网盘比如阿里云盘,天翼网盘,沃家云盘等来作为本地磁盘使用,传输速度也是非常快的. 那么,如何实现呢? 首先您需要下载一个很小的软件CloudDriveSetu ...

  3. 基于AList实现网盘挂载和WebDAV本地挂载网盘

    AList AList是一个支持多种存储,支持网页浏览和 WebDAV 的文件列表程序,由 gin 和 Solidjs 驱动. AList官方文档:https://alist.nn.ci/ AList ...

  4. linux 如何挂载网盘,13_Linux挂载云盘的操作

    运行 fdisk -l 命令查看实例是否有数据盘.如果执行命令后,没有发现 /dev/vdb,表示实例没有数据盘 创建一个单分区数据盘,依次执行以下命令: 运行 fdisk /dev/vdb:对数据盘 ...

  5. 百度云迁移到阿里云(本地挂载网盘)

    背景: 1.电脑硬盘不够 2.不想续费百度云网盘(想白嫖不想开会员) 原理 将阿里云盘挂载到本地电脑 然后百度云开会员直接下载到本地挂载的盘 需要准备的(https://www.aliyundrive ...

  6. Ubuntu-Windows-局域网内挂载网络硬盘(网盘)教程

    Ubuntu-Windows-局域网内挂载网络硬盘教程 文章目录 Ubuntu-Windows-局域网内挂载网络硬盘教程 前言: 局域网内文件传输方法大全(给赞好吧~) 挂载网盘 Windows挂载: ...

  7. 将阿里云盘挂载为Webdav并使用rclone挂载到本地

    准备工作 获取refreshToken 1.https://media.cooluc.com/decode_token/在此网页进行获取,但是我在搭建的时候报错,如果报错可以使用第二种方法 2.htt ...

  8. 能将阿里云盘挂载为webdav的webdav-aliyundriver

    虽然从内测开始就申请了阿里云盘,但是一直也没怎么用,网上一直强调的是阿里云盘的速度,但是在老苏看来天翼云也不算差,相对来说阿里云盘作为新的云盘,在功能上和百度云盘.天翼云盘这些成熟产品比还是存在很多欠 ...

  9. 在Ubuntu上解挂U盘

    在Ubuntu上解挂U盘,当然也可以在Gnome中点击..但想着用shell 一般gome 也会自动把U盘挂载.. 但是.. 也可以按下面的步骤. 1.sudo fdisk -l 找到你的U盘,如无意 ...

最新文章

  1. android 入门
  2. java日期类的计算问题_java日期计算(Calendar类)
  3. 批量删除Marketing Cloud里的contact
  4. 有赞美业微前端的落地总结
  5. 分享SharpZipLip使用代码
  6. 深度学习算法 | LSTM算法原理简介及Tutorial
  7. 【单目标优化求解】基于matlab非线性权重的自适应鲸鱼算法求解单目标优化问题(NWAWOA)【含Matlab源码 1665期】
  8. linux上jdk安装
  9. macfee怎么生成释放代码_mcafee规则设置技巧
  10. 可以在手机预览ps设计稿的软件
  11. java 多线程课件_Thread_java多线程参考源码_ppt_大学课件预览_高等教育资讯网
  12. 华为云计算认证为什么这么火,网络工程师必看云计算怎么学
  13. 如何理解前后端分离HTML5,Web前后端分离开发思路
  14. vue3.0脚手架的搭建
  15. Win 10 Edge不能上网,微软商店打不开的问题
  16. 磁盘被写保护怎样去掉
  17. raster包—resample函数
  18. Html5 1.4 figure和figcaption的实例
  19. 将 laravel 项目内静态文件,css、js、images 部署到七牛云 CDN
  20. 手机连接服务器数据库文件,手机连接服务器数据库文件在哪里

热门文章

  1. SOLIDWORKS直播课:解锁3DE协同设计平台的“云端结构设计角色”
  2. sqrt函数实现(涉及3D游戏引擎源码)
  3. 如何测试硬盘软件,如何进行硬盘测试?磁盘健康检测方法介绍
  4. 浅谈三极管、运放、MOS管驱动 的常见电路
  5. C++数据结构第13课、类族结构的进化
  6. JS数组的创建及正则表达式的对象
  7. 优秀logo设计解析_优秀logo设计作品及寓意解析,国外精品logo设计图片分享
  8. window批处理文件编写指南
  9. 如何成为有效学习的高手(许岑)——思维导图 1
  10. gps测试软件怎么算正常,完整的GPS测试和经济实用的解决方案