专栏/安卓与电脑的极速共享

安卓与电脑的极速共享

2021年02月06日 14:24--浏览 · --点赞 · --评论
粉丝:20文章:5

前言

我受够小米的USB2.0了,几百年了,一直是USB2.0的type-c,传电影到手机那叫一个慢,简直想把给type-c用USB2.0的厂家批判一番,咳咳。

    为此,我想到了用WIFI传文件,USB2.0的极限速度大概是480Mbps,也就是60MB/s,因此只要不是太老的手机,即使是最基本的433Mbps 5G WIFI,也能几乎媲美USB2.0的速度,更何况还是无线的呢。

    我试过许多无线传输的软件,速度都不是很理想,基本都是FTP协议,在路由器旁最快也就70MB/s(CX文件管理器),这速度虽然也已经非常不错了,但他的传输有不方便的地方,比如传输带有奇怪日文(里X)的文件,会直接传输失败。

    于是我想到了比较稳定好用的Samba,也就是Windows上的网络共享,这个协议即是在万兆网络下也能跑满速度。

正文

    成品的Samba安卓服务端好用的目前我就找到一个,名叫LAN drive,可以从谷歌商店上下载,但默认限制速度且有广告。

    身为白嫖怪,那自然是找破解版,不想花钱,那就折腾,于是我盯上了Termux。

Termux

    警告:本次操作可能有丁点复杂,且需要root不想折腾的请下载CX文件管理器或跳到最后看一键脚本为了避免误操作,对命令稍微做了下解释不要乱打命令,会出事的!!!!

    Termux简单来说就是终端模拟器,但不同于一般的终端模拟器,他可以安装软件包,使用体验十分相似linux终端,一定程度上也确实可以代替linux终端使用。

    下载链接:https://f-droid.org/repo/com.termux_106.apk

    下载安装后,打开大概是这个样子

Termux

1.首先,复制粘贴以下后回车

termux-setup-storage

这步是为了获取读写手机存储的权限。

2.复制粘贴以下后回车

cat > $PREFIX/etc/apt/sources.list << \EOF
deb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24/ stable main
EOF
cat > $PREFIX/etc/apt/sources.list.d/game.list << \EOF
deb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable
EOF
cat > $PREFIX/etc/apt/sources.list.d/science.list << \EOF
deb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable
EOF
cat > $PREFIX/etc/apt/sources.list.d/unstable.list << \EOF
deb https://mirrors.tuna.tsinghua.edu.cn/termux/unstable-packages unstable main
EOF

这一步是为了修改Termux的软件源,所谓软件源大概就是下载软件的地方,大陆地区访问官方的软件源十分慢,这里修改成了清华大学的软件源。如果之后的下载安装还是很慢,可以将mirrors.tuna.tsinghua.edu.cn替换成mirrors.ustc.edu.cn,这是中国科学技术大学的源。

/是linux终端下,目录与目录的分隔符,如/etc/apt/的意思就是在etc目录里面的apt目录。

$PREFIX(大写)是一个变量,我称之为可以变动的值,而这个变量的值在Termux一般是/data/data/com.termux/files/usr。

cat是获取文件内容的软件。

>是重定向符号,意思是把前面获取的内容覆盖掉后面的文件。

<<也是重定向符号,意思是将后面获取的内容传递给前面的命令,即cat

\是转义符号,意思是把后面所有符号的特殊用途无效化。

EOF本身不是命令,可以替换成其他单词,意思是在接下来的内容里,只要遇到EOF就停止记录内容,EOF本身不会被记录到内容里。

那么,这里的完整表述就是,cat将从EOF之后获取的内容输入覆盖掉/data/data/com.termux/files/usr/etc/apt/sources.list等文件的内容。

3.复制粘贴以下后回车

apt update && apt -y upgrade

这一步是在升级已经安装的软件包。

apt是一个软件,apt update的意思是刷新软件源信息,update本身就有更新信息的意思,像是你手机qq手动下滑刷新最新的聊天信息。

&&在这里的意思是前面的命令成功之后就继续下一个命令,否则不进行下一步。

apt -y upgrade-y是一个参数,告诉apt之后所有的操作都不再询问,而upgrade自然就是升级的意思。

4.复制粘贴以下后回车

apt -y install tsu samba

可能会卡在这里,请直接回车,这里的意思大概是下载的软件包里附带的配置文件和本地的不同,是否换成下载的。因为上面修改了软件源,被覆盖就会导致修改失效。

install就是安装的意思,这里正式安装了samba软件包及其依赖。

软件包,顾名思义,一堆软件打包在一起,里面可能有好几个软件及软件的配置文件。

依赖,即你依靠我,我依靠你的意思,有些软件在运行时可能会调用到别的软件,缺失了就会无法运行。

5.复制粘贴以下后回车

mkdir $PREFIX/etc/samba/

mkdir,我自己称作make directory,意思是创建文件夹

6.复制粘贴以下后回车

cat > $PREFIX/etc/samba/smb.conf << \EOF
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
smb ports = 4445
[storage]
path = /data/data/com.termux/files/home/storage/shared
writable = yes
EOF

这步是在创建samba服务的配置文件,我从centos8默认的配置文件修改来的,尽量最简化。

[global]是samba的全局配置项,一般不用修改。

[storage]是在windows文件管理器中显示的共享文件夹名称,即storage

path =

/data/data/com.termux/files/home/storage/shared

是共享的本机文件夹,这里是安卓的内部存储位置,一般不用修改。

writable = yes是开启共享文件夹的写入权限。

7.复制粘贴以下后回车

cat > $PREFIX/bin/samba << \EOF
#!/bin/bash
case $1 in
start)
sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -A OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
smbd
;;
stop)
killall smbd
sudo iptables -t nat -D PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -D OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
;;
restart)
killall smbd
sudo iptables -t nat -D PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -D OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -A OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
smbd
;;
*)
echo 'Samba Service'
echo 'samba start'
echo 'samba stop'
echo 'samba restart'
esac
EOF

这步是在创建一个名为samba的脚本。

case是一个条件测试语句,意思是在以下条件下,就做某事。

$1即在终端输入samba及空格之后的第一个内容,比如samba start中的start

in后面跟的就是某种条件。

sudo就是前面装的tsu中包含的软件之一,用来以root权限执行后面的命令。

iptables是一种防火墙设置软件,使用比较复杂,这里不详细介绍。在这里是将访问本机445端口的流量转发到本机的4445端口,-A-D是增加(add)及删除(delete)的意思,用以在开启关闭samba后增加或删除规则。

killall smbd意思是结束掉运行中所有名为smbd的程序。

smbd即samba服务的主程序。

*)意思是没有匹配到startstoprestart就执行以下命令 ,)的左边就是条件,*是通配符,匹配所有条件。

;;是条件与条件之间的分隔符。

echo是输出后面所跟内容到终端上的命令。

esaccase件测试语句的结束符。

这里端口转发的原因是因为windows的文件共享默认使用445端口,不支持自定义端口,而安卓默认用户不能使用1024以下的端口,需要root之后才能使用,由于未知原因,smbd在我这不能以445端口启动,只好以4445端口启动,再将访问445端口的流量转发到本机的4445端口。

8.复制粘贴修改以下后回车

pdbedit -a -u 你要使用的共享用户名

pdbedit是samba的用户管理工具,-a是增加(add)用户的意思,-u后面跟要使用的用户名(user)。

9.选择性复制粘贴以下后回车

开启共享

samba start

关闭共享

samba stop

重启共享

samba restart

如果不知道手机的ip地址呢,可以输入以下后回车

ip addr|grep wlan|grep inet|awk '{print $2}'|sed 's@/24@@'

10.在windows文件管理其中输入\\及上面获得的ip,比如我的就是\\192.168.1.11

windows文件管理器

11.如果想打开Termux就启动samba,可以输入以下回车

echo 'samba start' >> .bashrc

>>是重定向符号,意思是将前面echo输出的的内容追加到后面文件的末尾

测速

手机:红米K30 PRO,miui 12.2.2(安卓11),WIFI 6,5G,1200M无线

路由器:华为AX3 PRO

电脑:1000M有线

电脑到手机

电脑到手机

手机到电脑

手机到电脑

一键脚本

其实就是把前面的一串操作按顺序执行罢了,还是希望大家能完整看一遍文章,避免遇到什么不懂的操作。

1.复制粘贴以下内容并回车

cat > samba-install.sh << \NEEEMOOO
#!/bin/bash
termux-setup-storage
cat > $PREFIX/etc/apt/sources.list << \EOF
deb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24/ stable main
EOF
cat > $PREFIX/etc/apt/sources.list.d/game.list << \EOF
deb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable
EOF
cat > $PREFIX/etc/apt/sources.list.d/science.list << \EOF
deb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable
EOF
cat > $PREFIX/etc/apt/sources.list.d/unstable.list << \EOF
deb https://mirrors.tuna.tsinghua.edu.cn/termux/unstable-packages unstable main
EOF
apt update && apt -y upgrade
apt -y install tsu samba
mkdir $PREFIX/etc/samba/
cat > $PREFIX/etc/samba/smb.conf << \EOF
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
smb ports = 4445
[storage]
path = /data/data/com.termux/files/home/storage/shared
writable = yes
EOF
cat > $PREFIX/bin/samba << \EOF
#!/bin/bash
case $1 in
start)
sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -A OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
smbd
;;
stop)
killall smbd
sudo iptables -t nat -D PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -D OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
;;
restart)
killall smbd
sudo iptables -t nat -D PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -D OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -A OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
smbd
;;
*)
echo 'Samba Service'
echo 'samba start'
echo 'samba stop'
echo 'samba restart'
esac
EOF
chmod 755 $PREFIX/bin/samba
read -p '输入你想用的网络共享用户名:' USERNAME
read -p '输入你想用的网络共享密码:' PASSWORD
echo -e "$PASSWORD\n$PASSWORD\n" | pdbedit -t -a -u $USERNAME
echo '输入samba start启动网络共享'
echo '输入samba stop关闭网络共享'
echo '输入samba restart重新启动网络共享'
echo "你的网络共享用户名是$USERNAME"
echo "你的网络共享密码是$PASSWORD"
echo "你的ip地址是$(ip addr|grep wlan|grep inet|awk '{print $2}'|sed 's@/24@@')"
echo "在Windows文件管理器地址栏输入\\\\$(ip addr|grep wlan|grep inet|awk '{print $2}'|sed 's@/24@@')\\来访问本机文件"
NEEEMOOO

2.输入以下并回车

bash samba-install.sh
卡在这里就直接回车

卡在这里就直接回车

按提示输入用户名及密码

按提示输入用户名及密码

脚本提示

脚本提示

如果想打开Termux就启动samba,可以输入以下回车

echo 'samba start' >> .bashrc

总结

这番操作可能不适合所有品牌的所有手机,我仅测试了安卓10及安卓11的K30 PRO都能使用,如果有问题我尽量回复,但菜鸡能力有限〒▽〒。

是真的挺折腾的,但也很有意思,随着WIFI越来越快,超过USB3的速度也不是梦。

当然还是希望miui官方能加上这种局域网传输,我看华为都有了,国产系统之光怎么能落后于EMUI呢,更何况华为有USB3的手机,小米没有o(╥﹏╥)o。

投诉或建议