- 对scp的封装, 自动跳过被 gitignore 的文件
- 原理 - 用 sshfs 把远程目录挂在本地的临时目录 - 用 xcp 复制文件
之前我尝试过用 sftp 传输文件, 但是 sftp 很难控制远程 git 仓库 后来我发现 sshfs 可以操控远程 git 仓库像本地一样简单 因此切换到了 sshfs
-
基本用法
- 和 scp 一样, 不过传目录不需要 -r 参数
-
smartscp remote-host:remote_path local_path smartscp local_path remote-host smartscp local_path remote-host:remote_path
-
- 如果目标目录是缺省的, smartscp 会自动根据原目录相对于 home 的偏移量, 计算目标目录
- 比如source 是 ~/foo/bar, 那会自动传到远程的 ~/foo/bar
-
smartscp ~/foo/bar remote-host
- 如果目标目录是缺省的, smartscp 会自动根据原目录相对于 home 的偏移量, 计算目标目录
-
使用场景
- 传 rust 项目的时候,避免传 target/
- 传 nodejs 项目的时候, 避免传 node_modules/
- 对于带宽 网速有限的网络环境, 特别有用
-
尚不支持的功能
- 包含 : 的文件名
-
注意
- 不兼容 scp 的参数, 比如不接受 -r 参数
- 不要直接替代 scp
-
Q&A
- 为什么不用
rsync --exclude=
- 我并不觉得方便
- 不够自动化
- 要支持复杂的 gitignore
- 为什么用rust写 - 为了在源码级依赖 xcp
- 为什么不从头用rust写一遍 scp, 而不是调用 scp
- 需要不少工作量
- 为什么不用 c 直接改 scp
- c 中不太方便导库
- 为什么不用
1
共 0 条评论, 1 页
评论区
写评论还没有评论