< 返回我的博客

lengyijun 发表于 2024-01-18 13:30

Tags:大家的项目

  • 对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
        
  • 使用场景

    • 传 rust 项目的时候,避免传 target/
    • 传 nodejs 项目的时候, 避免传 node_modules/
    • 对于带宽 网速有限的网络环境, 特别有用
  • 尚不支持的功能

    • 包含 : 的文件名
  • 注意

    • 不兼容 scp 的参数, 比如不接受 -r 参数
    • 不要直接替代 scp
  • Q&A

    • 为什么不用 rsync --exclude=
      • 我并不觉得方便
      • 不够自动化
      • 要支持复杂的 gitignore
    • 为什么用rust写 - 为了在源码级依赖 xcp
    • 为什么不从头用rust写一遍 scp, 而不是调用 scp
      • 需要不少工作量
    • 为什么不用 c 直接改 scp
      • c 中不太方便导库

评论区

写评论

还没有评论

1 共 0 条评论, 1 页