这个脚本的应用场景很简单:
以类似
cp
的体验,将文件 /剪贴板复制给局域网内的另一个人
比如 A 想给 B 一个文件夹的数据,B 想把它放在本地的项目中测试,那么:
# A:
~/archive $ lcp data/001/ B.local
# B:(网络名 B.local (太长了? lcp 也支持自定义别名哒))
~/project/data $ ls
~/project/data $ lcp -d 001-A
~/project/data $ ls
001-A
接收者可决定将文件放哪里和 /或重命名,有那么点儿 AirDrop 的意味。
为什么写这个?一方面,有时候我们对分享只是一次性的轻量需求,借助一个中途的共享空间显得又些多余。另一方面,这跟 scp 的应用场景稍有区别,我是希望这两者互补的。scp 更适合“自己传给自己”,毕竟发送和接收的的用户都应该是属于你的,而且 scp 的使用者一人指定了文件的起点和终点。
那么,请试一下:(在努力适配 *nix,有兼容性问题请提出)
# 默认是不启用剪贴板集成的。要使用请在安装前将环境变量 `LCP_CLIPBOARD=1` 写进你的 shell profile。
bash <(curl -Ls https://lcp.now.sh/get)
这背后其实没什么技术含量,就是 V 站经常见到的传文件技巧: tar czf - | nc $host $port
然后 nc -l $host $port | tar xz
。我在命令行传文件给别人总找不到什么干净利落的方法(我们实验室是在每台机子上建所有人的用户然后互相 scp 的……),看到这个很是喜欢,又觉得写个 alias 不够,就干脆封装个交互舒服一点的 Bash 脚本,然后顺手做了剪贴板。当然,如果各位有更好的方法请无情打脸,我就当写 Bash 练个手吧。
因为是个简单的实现,没有任何加密与鉴权处理,请务必仅在信任的局域网中使用。
项目: https://github.com/Contextualist/lcp
第一次认真写 Bash,请多提意见!
1
tidaizhe 2019-07-24 09:11:24 +08:00
python -m SimpleHTTPServer 3000 多方便
|
2
leoleoasd 2019-07-24 09:22:20 +08:00
scp 多方便
|
3
LittleWhiteMouse 2019-07-24 09:23:43 +08:00
Ditto
|
4
shuizhengqi 2019-07-24 09:44:58 +08:00
sftp,ftp,rsync 不好使吗
|
5
Contextualist OP @tidaizhe
一两个文件还 OK,文件夹就有些费劲。而且感觉这个下载的话比较浏览器友好吧,命令行就麻烦 @leoleoasd @LittleWhiteMouse @shuizhengqi emmm …… 这些工具在传文件给别人时基本要两步:A 把文件放在 B 有读权限的地方,然后 B 从那个地方把文件复制出来。lcp 就是为了解决掉这个中间步骤,A、B 谁先谁后无所谓,而且 A 只管要发什么文件,B 只管要接收到什么地方。 |
6
leoleoasd 2019-07-24 10:04:11 +08:00
@Contextualist #5 python3 -m http.server
|
7
leoleoasd 2019-07-24 10:04:31 +08:00
@Contextualist #5 发送者只管发傻文件 接受者只管下到哪里
|
8
zjiecode 2019-07-24 18:36:46 +08:00
我一直用的
npx http-server |
9
Contextualist OP @leoleoasd @mrjiejiejie
用 HTTP 文件 server,要么发的人需要整理(移动 /打包)文件,要么收的人就要满地找文件了,还有就是对文件夹传输不友好。如果我的例子用 HTTP server 重写,大概就是这个样子了: # A: ~/archive $ tar czf 1.tar.gz -C data 001 && python3 -m http.server (同理上面后半部分可换 npx http-server ) # B: ~/project/data $ curl A.local:8000/1.tar.gz | tar xz && mv 001 001-A |