ssh 文件传输:你应该掌握的几种命令行工具

image.png
这篇文章主要分享一下我使用过的 ssh 传输文件的进阶路程,从 scp -> lrzsz -> trzsz,希望能给你带来一些帮助~

scp

scp 命令可以用于在 linux 系统之间复制文件,具体的语法可以参考下图
image.png
其实使用起来也还比较方便, 比如下面的例子,share目录下有一个1.txt文件,如果要使用 scp 命令来传到服务器上的话,需要执行 scp 1.txt root@服务器ip:/home/share注意将@后的地址替换成你自己的服务器 ip,分号后的路径是你要上传到的服务器目录
image.png
下载文件也可以使用 scp 来操作,比如我们的服务器上有一个 test.js文件,我们想把它下载到本地,那么可以执行这行命令 scp root@服务器ip:/home/share/test.js . 就可以了
image.png
用了一段时间后发现,scp 存在一些不便利的地方,比如我现在正在服务器上查看文件,这时想要把日志文件下载到本机,就要再开一个 shell,然后复制文件目录,再执行 scp 命令,太麻烦了,不适合我~

lrzsz

第二个要介绍的是 lrzsz 命令,我使用的终端工具是 iterm2, 所以需要进行一些配置才能使用,具体的步骤如下
本地安装 lrzsz命令

brew install lrzsz

进入 /usr/local/bin目录下,新增下面两个文件
iterm2-send-zmodem.sh

#!/bin/bash
# Author: Matt Mastracci (matthew@mastracci.com)
# AppleScript from http://stackoverflow.com/questions/4309087/cancel-button-on-osascript-in-a-bash-script
# licensed under cc-wiki with attribution required 
# Remainder of script public domainosascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; thenFILE=$(osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
elseFILE=$(osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
fi
if [[ $FILE = "" ]]; thenecho Cancelled.# Send ZModem cancelecho -e \\x18\\x18\\x18\\x18\\x18sleep 1echoecho \# Cancelled transfer
else/opt/homebrew/bin/sz "$FILE" --escape --binary --bufsize 4096sleep 1echoecho \# Received "$FILE"
fi

iterm2-recv-zmodem.sh

#!/bin/bash
# Author: Matt Mastracci (matthew@mastracci.com)
# AppleScript from http://stackoverflow.com/questions/4309087/cancel-button-on-osascript-in-a-bash-script
# licensed under cc-wiki with attribution required 
# Remainder of script public domainosascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; thenFILE=$(osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
elseFILE=$(osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
fiif [[ $FILE = "" ]]; thenecho Cancelled.# Send ZModem cancelecho -e \\x18\\x18\\x18\\x18\\x18sleep 1echoecho \# Cancelled transfer
elsecd "$FILE"/opt/homebrew/bin/rz --rename --escape --binary --bufsize 4096 sleep 1echoechoecho \# Sent \-\> $FILE
fi

然后打开 iterm2 的配置,Profiles -> Defualt -> Advanced -> Triggers -> Edit -> 新增
第一条是用于下载文件的命令 sz

Regular expression:\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh

第二条是用于接受文件的命令 rz

Regular expression:\*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh

结果如下图
image.png
操作完成后本地就配置好了,接下来再到服务器上去安装 lrzsz命令,我使用的是 centOS 服务器,可以执行 yum install lrzsz就好了
等执行完毕后,就可以在服务器上上传和下载文件了,比如上传文件,在服务器上输入 rz命令后,会自动弹出文件选择框,然后选择你要传输的文件就可以了
image.png
传输成功显示应该是这样的
image.png
在使用了一段时间后,我又发现了一些不爽的点,比如:上传、下载大文件时,没法看进度,而且感觉速度也比较慢,另外不支持 tmux 终端等。经过一番查找,发现了trzsz命令。

trzsz

项目地址:https://trzsz.github.io/。trzsz 是一个简单的文件传输工具,而且兼容 tmux,一看介绍,这不就是我想要的吗?果断安装尝试一下
本地安装 trzsz命令

brew install trzsz

服务器安装 trzsz命令,这里我使用的是 python 来安装

python3 -m pip install --upgrade trzsz

这样就好了,然后在使用 ssh 的时候在命令前加上 trzsz就可以了
比如:

trzsz ssh roo@服务器ip

进入服务器后,我们可以使用 trz命令来上传文件,执行后,同样会自动弹出文件选择框,然后选择你要上传的文件就可以了,这里我选择了一个 jdk 的大文件
image.png
然后就能看到上传进度了
image.png
下载文件也很简单,直接输入 tsz 文件名,然后选择本地要保存的目录就可以了。

总结

本篇文章记录了我使用 ssh 传输文件的命令行工具进阶过程,后续如果我发现更好用的工具也会同步更新,如果你对这方面感兴趣的话~可以点个关注哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/315082.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】Docker 实践(三):使用 Dockerfile 文件构建镜像

Docker 实践(三):使用 Dockerfile 文件构建镜像 1.使用 Dockerfile 文件构建镜像2.Dockerfile 文件详解 1.使用 Dockerfile 文件构建镜像 Dockerfile 是一个文本文件,其中包含了一条条的指令,每一条指令都用于构建镜像…

智慧码头港口:施工作业安全生产AI视频监管与风险预警平台方案

一、建设思路 随着全球贸易的快速发展,港口作为连接海洋与内陆的关键节点,其运营效率和安全性越来越受到人们的关注。为了提升港口的运营效率和安全性,智慧港口视频智能监控系统的建设显得尤为重要。 1)系统架构设计 系统应该采…

针对icon报错

针对上篇文章生成图标链接中图标报错 C# winfrom应用程序添加图标-CSDN博客 问题:参数“picture”必须是可用作Icon的参数 原因:生成的ico图标类型不匹配 解决方法: 更改导出的ico类型

下载学浪视频,小浪助手一键搞定

小浪助手可以一键获取课程,一键根据课程获取视频列表,而且内置了2大下载器,N_m3u8和逍遥一仙下载器 小浪助手我已经打包好了,有需要的自己取一下 学浪下载工具链接:https://pan.baidu.com/s/1_Sg-EGGXKc4bMW-NPqUqvg…

第55篇:创建Nios II工程之Hello_World<一>

Q:本期我们开始介绍创建Platform Designer系统,并设计基于Nios II Processor的Hello_world工程。 A:设计流程和实验原理:需要用到的IP组件有Clock Source、Nios II Processor、On-Chip Memory、JTAG UART和System ID外设。Nios I…

Maven多模块快速升级超好用Idea插件-MPVP

功能:多模块maven项目快速升级指定版本插件,并提供预览和相关升级模块日志能力。 可快速进行版本升级,进行部署到Maven仓库。 安装: 可在idea插件中心进行安装 / 下载资源拖动安装 MPVP(Maven) - IntelliJ IDEs Plugin | Marke…

构建安全高效的前端权限控制系统

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

数据库变更时,OceanBase如何自动生成回滚 SQL

背景 在开发中,数据的变更与维护工作一般较频繁。当我们执行数据库的DML操作时,必须谨慎考虑变更对数据可能产生的后果,以及变更是否能够顺利执行。若出现意外数据丢失、操作失误或语法错误等情况,我们必须迅速将数据库恢复到变更…

Bayes判别示例数据:鸢尾花数据集

使用Bayes判别的R语言实例通常涉及使用朴素贝叶斯分类器。朴素贝叶斯分类器是一种简单的概率分类器,基于贝叶斯定理和特征之间的独立性假设。在R中,我们可以使用e1071包中的naiveBayes函数来实现这一算法。下面,我将通过一个简单的示例展示如…

npm、yarn与pnpm详解

🔥 npm、yarn与pnpm详解 🔖 一、npm 🔍 简介: npm是随Node.js一起安装的官方包管理工具,它为开发者搭建了一个庞大的资源库,允许他们在这个平台上搜索、安装和管理项目所必需的各种代码库或模块。 &#…

Intelij Idea Push失败,出现git Authentication failed(验证失败)

目录 1、出现问题的原因 2、解决之法 1、出现问题的原因 能出现这种问题,最主要的原因是链接对上了,但用户验证失败了,即登录失败。 因为服务器转移或者换了git项目链接,导致你忘记了用户名密码,随意输入之后&…

求三个字符数组最大者(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <string.h>int main() {//初始化变量值&#xff1b;int i 0;char str[3][20];char string[20];//循环输入3个字符…

AIGC - SD(中英文本生成图片) + PaddleHub/HuggingFace + stable-diffusion-webui

功能 stable-diffusion(文本生成图片)webui-win搭建&#xff08;开启api界面汉化&#xff09;PaddleHubHuggingFace: SD2&#xff0c;中文-alibaba/EasyNLP stable-diffusion-webui 下载与安装 环境相关下载 python&#xff08;文档推荐&#xff1a;Install Python 3.10.6 …

Ubuntu中的 Everything 搜索软件 ==> fsearch

本文所使用的 Ubuntu 系统版本是 Ubuntu 22.04 ! 在 Windows 中&#xff0c;我经常使用 Everything 来进行文件搜索&#xff0c;搜索效率比 Windows 自带的高出千百倍。 那么在 Ubuntu 系统中&#xff0c;有没有类似的软件呢&#xff1f;那必须有&#xff0c;它就是 FSearch 。…

uniapp app权限说明弹框2024.4.23更新

华为上架被拒绝 用uni-app开发的app&#xff0c;上架华为被拒&#xff0c;问题如下&#xff1a; 您的应用在运行时&#xff0c;未见向用户告知权限申请的目的&#xff0c;向用户索取&#xff08;电话、相机、存储&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。…

C#基础:WPF中常见控件的布局基础

一、用ViewBox实现放缩控件不变 二、布局代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"Title"MainWindow"…

探索矿业数字化平台:实现智能化采矿与管理

随着信息技术的迅猛发展&#xff0c;矿业领域也在逐步实现数字化转型。数字化平台的出现为矿业企业带来了更高效、更智能的采矿与管理方式。本文将探讨矿业数字化平台的意义、特点以及未来发展方向。 ### 1. 数字化平台的意义 传统的矿业生产和管理方式存在诸多问题&#xff…

浏览器渲染机制:重排(Reflow)与重绘(Repaint)以及Vue优化策略

浏览器渲染机制是一个复杂但有序的过程&#xff0c;其目的是将HTML、CSS和JavaScript代码转化为用户可以看到和交互的视觉界面。重排&#xff08;Reflow&#xff09;与重绘&#xff08;Repaint&#xff09;是浏览器渲染过程中对页面元素进行更新的两个重要步骤&#xff0c;理解…

系统设计 --- E2E Test System

系统设计 --- E2E Test System 什么是E2EE2E Architecture Example 什么是E2E E2E&#xff08;端到端&#xff09;测试是一种软件测试方法&#xff0c;旨在模拟真实的用户场景&#xff0c;测试整个应用程序或系统的端到端功能和交互流程。E2E 测试涵盖了从用户界面到后端系统的…

物联网实战--平台篇之(一)架构设计

本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 一、平台简介 物联网平台这个概念比较宽&#xff0c;大致可以分为两大类&#x…