macOS iTerm2+rz/sz 上传文件到服务器(比 rsync 和 scp 方便) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xiebruce
V2EX    程序员

macOS iTerm2+rz/sz 上传文件到服务器(比 rsync 和 scp 方便)

  •  
  •   xiebruce
    xiebruce 2023-05-21 17:11:56 +08:00 3578 次点击
    这是一个创建于 887 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前一直用 rsync 和 scp 上传 /下载文件,每次都要写登录用户名、ip 及路径,比较麻烦,昨天研究了一下 rz/sz ,结合 iTerm2 ,参考别人的脚本写了两个脚本。

    • 上传:会弹窗让你选择要上传哪些文件,支持多文件上传;
    • 下载:不弹窗,直接保存到“下载”目录(当然也可设置为弹窗)

    地址: https://github.com/xiebruce/iterm2-zmodem

    22 条回复    2023-05-23 14:22:34 +08:00
    makelove
        1
    makelove  
       2023-05-21 17:53:54 +08:00
    macOS 有没有~/.ssh/config 这个机制吗,可以给你的 ssh 主机起别名,别名代表用户名 /ip 组合,还可以叠加别的设置比如代理
    xiebruce
        2
    xiebruce  
    OP
       2023-05-21 18:01:59 +08:00
    @makelove 有,我也弄过,不过现在没在用,你不说我都忘了有这功能了,主要是我平时登录直接在 iTerm2 里选择,并不手写,所以只是登录的情况下就用不到这功能,但传文件是必须写,不过就算用别名也麻烦,rz/sz 两个字母就搞定
    Volekingsg
        3
    Volekingsg  
       2023-05-21 21:32:59 +08:00
    看了下 https://www.xiebruce.top/1863.html ,rz 还要选文件,sz 也需要输入路径,而且也不适用本地传文件到服务器,或者服务器传文件到别的服务器,没太看出来咋方便了。
    Nazz
        4
    Nazz  
       2023-05-21 21:52:13 +08:00 via Android
    ssh-copy-id 就不需要密码了
    xiebruce
        5
    xiebruce  
    OP
       2023-05-22 00:14:06 +08:00 via iPhone
    @Nazz 我有做,用公登嘛,可是麻的又不是入密,而是要敲命令,敲路或拖路,等等
    xiebruce
        6
    xiebruce  
    OP
       2023-05-2 00:31:09 +08:00 via iPhone
    @Volekingsg rz 是要路但不用敲路,只需鼠就可以了,不用敲 scp/rsync++服器 user@ip ,就算置了名服器多也要想想是哪名

    sz 敲文件名就行,因我都是在要的文件前文件下,只需要 rz 再敲文件前三字母再按 tab 全就行,而且不用任何,之比 rsync/scp 方便很多,我之前用的就是 rsync/scp ,比起是很明的,明天我要加拖放上,直接把文件往端(已登服器的窗口)一拖就上了
    hauzerlee
        7
    hauzerlee  
       2023-05-22 02:04:21 +08:00
    键盘党和鼠标党的习惯区别吧。。。我习惯键盘,任何需要用鼠标(触摸板也一样)的操作都觉得不靠谱,容易点错,还费眼。敲命令可以盲打。不管怎么说,自己动手写点东西改进使用环境,都该支持一下。
    achina0731
        8
    achina0731  
       2023-05-22 06:36:12 +08:00 via iPhone
    croc 了解一下
    likeme
        9
    likeme  
       2023-05-22 09:29:59 +08:00   1
    感觉 secureFX 更方便,command+V 就上传了。。。
    xslong
        10
    xslong  
       2023-05-22 09:44:16 +08:00
    服务器上的 .ssh/authorized_keys 加上自己电脑的公钥就不用输密码啦,常用的服务器取个别名设置 hosts ,上传、下载文件用 scp 效率很高。
    shimada666
        11
    shimada666  
       2023-05-22 12:39:53 +08:00
    lrzsz 没有 iterm2 体验不咋滴,我选择带进度条的 trzsz
    xiebruce
        12
    xiebruce  
    OP
       2023-05-22 14:42:33 +08:00
    @achina0731 croc 看上去不错
    xiebruce
        13
    xiebruce  
    OP
       2023-05-22 14:43:22 +08:00
    @shimada666 之前不知道 trzsz ,我也是配置完才发现有 trzsz 可以用
    xiebruce
        14
    xiebruce  
    OP
       2023-05-22 15:19:05 +08:00
    @likeme 应用场景不一样,比如我正在终端上操作服务器,刚好遇到要上传一个文件到当前文件夹,于是我就在操作服务器的终端界面上输入 rz ,按回车,它就会弹窗让我选择要上传什么文件,我选择文件后就上传了。

    而如果用 secureFX ,我还得切到另一个软件(即 secureFX),甚至我根本就还没打开 secureFX ,我还得先打开,然后连接上这服务器,然后一级一级找到对应目录,再来上传,这个过程的复杂度明显高很多。

    而且 secureFX 收费软件,而且我觉得那种界面太花哨,对我来说是一个没必要的软件,这种基于 sftp 的软件其实很多,不止 secureFX ,比如:Transmit 。

    主要是,我并不是专门传文件,而是在操作服务器的过程中偶尔要上传文件,既然我可以直接在当前终端上上传,就没必要再开一个软件,连接服务器,一级一级找到对应的目录来上传这么麻烦
    ruanimal
        15
    ruanimal  
       2023-05-22 15:46:37 +08:00
    rzsz 一般是用在有跳板机的场景
    xiangagou
        16
    xiangagou  
       2023-05-22 15:59:01 +08:00
    如果是做个脚本能自动配置就好了,现在这项目基本就是介绍配置流程,相当于把博客内容搬到 github
    xiebruce
        17
    xiebruce  
    OP
       2023-05-22 16:01:03 +08:00
    @xslong 公钥登录一直都有配置,我说的麻烦并不是输入密码,而是整个操作过程啦,如果我用的是 rz/sz ,比如我正在服务器上操作,刚好要上传一个文件,直接输入 rz ,回车,它就会弹窗让我选择,选择文件后就上传了,一气呵成。

    但是如果像你说的 scp ,首先,我就要离开当前操作界面(因为当前在服务器),终端新开一个 Tab(或切换到已经打开的本地 Tab),然后 scp /path/to/filename serveralias:/home/username (我试过无法用 ~ 代替,必须写全 /home/username/),当然要传的文件可能刚好在当前文件夹,于是可以敲 scp filename serveralias:/home/username ,并且不用敲全,按 tab 可以补全,可是有时候这服务器不经常登录,serveralias 我可能忘了,我还得想一下(想的出来还好,想不出来还要去找),上传到服务器家目录还好,如果不是要上传到家目录,我还得想一下要传到哪个路径,或者干脆又切回服务器那边 pwd 出个路径再回来粘贴。

    比起我直接在当前服务器操作窗口运行一个 rz ,scp 的这一顿操作下来,确实是麻烦很多,而且这只是上传文件。

    如果是下载文件,比如我在终端操作服务器,操作到某个位置,刚好想下载其中的一个文件,名为“filename”,那么我只需要:sz fil ,按 tab 补全,回车,OK ,稍等一会儿文件就到了我本机的“下载”目录了,简直超级方便有木有。

    而这个下载操作如果换成 scp ,我还得首先切到到另一个本地 Tab ,输入:scp serveralias: (这里还是会出现如果不太记得 alias 的问题),然后等等,我要下载的文件在哪个路径来着,再切回去服务器那边,pwd 一下复制到文件所在目录路径,然后再切回本地终端 Tab ,粘贴一下,等等,只粘贴了文件所在文件夹路径,文件名比较长我记不全,我还要回去再粘贴一次文件名,ok ,现在终于粘贴好了:`scp serveralias:/path/to/folder/filenamexxx .` 终于打完了,回车运行,开始下载。

    其中我做了很多假设,现在我就假设你很熟悉 serveralias 和需要下载的文件路径,并且在当时就已经双击复制了要下载的文件名,那你至少还得切到本地终端 Tab ,然后输入 scp serveralias:/path/to/folder/,粘贴文件名,最后回车下载,而我用 sz ,直接在服务器那边 sz fil (假设要下载文件为 filenamexxxx ),按 tab 补全,回车,那也比你这方便很多,况且这是在假设你非常熟悉的记得 serveralias 和要下载的文件在服务器中的 path 的情况下。

    你体会一下这种操作,哪个方便? 不过缺点就是 rz/sz 不支持传输文件夹,但是有替代的来了,换用 trz/tsz 就可以了,操作完全一样,但是支持文件夹,而且有传输进度条。
    xiebruce
        18
    xiebruce  
    OP
       2023-05-22 16:02:51 +08:00
    @ruanimal 没有跳板机也可以用呀,你可以看我回复 @xslong 的那段,主要是它操作起来确实比 scp/rsync 方便的多
    xiebruce
        19
    xiebruce  
    OP
       2023-05-22 16:08:59 +08:00
    @xiangagou 自动配置不了的,主要是涉及 iTerm2 那边的触发器,那是软件上的东西,你必须鼠标点击自己添加,我这项目其实就是两个脚本,这两个脚本是关键,没有这两个脚本就无法工作。
    ruanimal
        20
    ruanimal  
       2023-05-22 18:17:14 +08:00
    而且 op 写代码的时候真的搜索一下吗 https://github.com/aikuyun/iterm2-zmodem
    xiebruce
        21
    xiebruce  
    OP
       2023-05-23 12:15:24 +08:00
    @ruanimal 其实我就是参考这个写的,主要原因是他的代码无法上传多个文件,以及文档不清不楚。

    而我目前添加了上传多文件功能以及拖放上传功能,以及非常详细完整的文档,按我文档一定能配置成功。

    写完怕时间一长会丢(硬盘坏啦 /不小心删掉啦 /换电脑没注意弄过来啦等等),于是就上传到 github 备份一下咯,既然都在 github 了,都就分享一下看是否有人需要咯,当然也是作为自己的一个记录,很多东西不记录,时间一长就忘了。
    ruanimal
        22
    ruanimal  
       2023-05-23 14:22:34 +08:00
    @xiebruce good job
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     997 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:52 PVG 02:52 LAX 11:52 JFK 14:52
    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