为了提升远程办公效率,开发了个代码同步工具 sync-go - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
nladuo
V2EX    分享创造

为了提升远程办公效率,开发了个代码同步工具 sync-go

  •  
  •   nladuo
    nladuo 2020-02-15 01:24:41 +08:00 5560 次点击
    这是一个创建于 2070 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前我远程办公主要用的是 pycharm+terminal,然后需要连接两三个中间服务器才能到目标服务器,因为我本人无法习惯使用 vim,所以代码编辑主要还是 pycharm。这样代码同步上传的话就需要多至少两次 scp。

    这个服务器之间的文件同步和本地到服务器的文件同步也有区别,主要是网络延迟,本地文件改完了,几十 M 甚至上百兆都可以瞬间完成。但是服务器之间的话就会有很高的网络延迟,满足我需求的工具目前我好像是没找到,于是就造了个轮子。

    代码地址: https://github.com/nladuo/sync-go 效果:

    说明文章: https://juejin.im/post/5e45203fe51d4526d43f2818

    22 条回复    2020-02-24 14:05:22 +08:00
    jakezh
        1
    jakezh  
       2020-02-15 01:49:43 +08:00
    没明白 io.Copy(dstFile, srcFile) 怎么解决的网络延迟
    直接 mount 就可以吧
    nladuo
        2
    nladuo  
    OP
       2020-02-15 01:59:24 +08:00
    @jakezh 这个说的是另一个工具传输的文件大小都是 0 可能存在的原因。网络延迟其实就是要加一个判断,等待文件不再写入,然后再上传。因为如果在上传一个文件的时候,会不断的刷新,然后可能会不断地重新上传很多遍。
    ericls
        3
    ericls  
       2020-02-15 02:06:50 +08:00 via iPhone
    Fuse 应该有此类工具
    jakezh
        4
    jakezh  
       2020-02-15 03:00:09 +08:00
    我用 inotify + rsync
    nladuo
        5
    nladuo  
    OP
       2020-02-15 03:09:56 +08:00
    @jakezh 我同学他们配代理好像用的 rsync,没太用过,之前听他们说需要配端口权限不够。还是 scp 这种比较符合我的需求。
    visitant
        6
    visitant  
       2020-02-15 04:14:28 +08:00
    vscode remote 不香吗
    nladuo
        7
    nladuo  
    OP
       2020-02-15 05:08:36 +08:00 via iPhone
    @visitant vscode remote 能传无限级 ssh 吗?和普通的 sftp 工具不一样?
    ericls
        8
    ericls  
       2020-02-15 05:16:39 +08:00 via iPhone
    sshfs
    orzfly
        9
    orzfly  
       2020-02-15 05:36:04 +08:00
    use ssh -J / ProxyJump: https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts

    From command line:
    ssh -J [email protected]:22,[email protected]:2222 [email protected]

    In ssh_config:
    Host server3
    HostName 192.168.5.38
    ProxyJump [email protected]:22,[email protected]:2222
    User fred

    效果:
    先连 jumphost1,在这 jumphost1 上面连 jumphost2,然后在 jumphost2 上连 192.168.5.38
    nladuo
        10
    nladuo  
    OP
       2020-02-15 06:20:46 +08:00 via iPhone
    @ericls 这个很棒
    nladuo
        11
    nladuo  
    OP
       2020-02-15 06:21:27 +08:00 via iPhone
    @orzfly 还要监控一下文件才行。
    nladuo
        12
    nladuo  
    OP
       2020-02-15 06:23:19 +08:00 via iPhone
    @ericls 不过不清楚不能用 yum 或者 apt 的话安装是不是很方便。
    Kobayashi
        13
    Kobayashi  
       2020-02-15 08:57:18 +08:00 via Android
    写好 ssh 配置文件,确保 ssh destination-host 可以直接登录。然后使用 rsync 命令同步即可( rsync 认证基于 ssh,同步为差量同步)。
    Kobayashi
        14
    Kobayashi  
       2020-02-15 08:58:22 +08:00 via Android
    @Kobayashi 关键是 SSH ProxyJump 配置自动连接跳板机,我自己是中间跨两台跳板。
    duhongle
        15
    duhongle  
       2020-02-15 10:38:24 +08:00
    BitTorrent Sync 可以试试
    Lanayaaa
        16
    Lanayaaa  
       2020-02-15 15:41:59 +08:00
    可以指定 exclude 某些文件夹吗? 比如 node_modules
    nladuo
        17
    nladuo  
    OP
       2020-02-15 19:56:15 +08:00 via iPhone
    @PainAndLove 目前我没过滤这个
    flynaj
        18
    flynaj  
       2020-02-15 21:27:07 +08:00 via Android
    文件同步 t 用 syncing
    codepm
        19
    codepm  
       2020-02-16 22:27:24 +08:00
    项目管理工具-项目加 https://www.xiangmujia.com 支持下
    lolizeppelin
        20
    lolizeppelin  
       2020-02-17 13:28:33 +08:00
    rsync 可以走 ssh 不需要开服务的
    KickAssTonight
        21
    KickAssTonight  
       2020-02-20 13:59:55 +08:00
    rsync +1
    sbilly
        22
    sbilly  
       2020-02-24 14:05:22 +08:00
    sshfs
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5635 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 03:15 PVG 11:15 LAX 20:15 JFK 23:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86