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 domain

osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
	FILE=$(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)&\"\")")
else
	FILE=$(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 = "" ]]; then
	echo Cancelled.
	# Send ZModem cancel
	echo -e \\x18\\x18\\x18\\x18\\x18
	sleep 1
	echo
	echo \# Cancelled transfer
else
	/opt/homebrew/bin/sz "$FILE" --escape --binary --bufsize 4096
	sleep 1
	echo
	echo \# 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 domain

osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
	FILE=$(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)&\"\")")
else
	FILE=$(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)&\"\")")
fi

if [[ $FILE = "" ]]; then
	echo Cancelled.
	# Send ZModem cancel
	echo -e \\x18\\x18\\x18\\x18\\x18
	sleep 1
	echo
	echo \# Cancelled transfer
else
	cd "$FILE"
	/opt/homebrew/bin/rz --rename --escape --binary --bufsize 4096 
	sleep 1
	echo
	echo
	echo \# 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.mfbz.cn/a/580165.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java-注解

简介 自定义注解 定义 // 自定义注解 public interface MyAnnotation {// 注解的属性// value是注解的一个属性,如果只有一个属性,建议使用valueString value() default "";boolean enabled() default true;String[] exclude() default {}; }使…

适用于Windows和Mac的十大误删除数据恢复软件

数据恢复是从辅助存储或可移动文件中找回丢失、删除或损坏的数据的过程。数据丢失的原因有很多。因此,有必要恢复已删除的数据。有各种可用的软件工具,使用户能够恢复任何类型的已删除数据。但是,任何数据恢复都有四个主要阶段。他们正在修复…

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

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

Altera FPGA 配置flash读写

目录 一、读写控制器的配置 二、生成flash的配置文件 三、关于三种配置文件的大小 四、其他 一、读写控制器的配置 Altera ASMI Parallel(下文简称ASMI)这个IP就仅仅是个Flash读写控制器,可以自由的设计数据来源。 关于这个IP的使用,可以…

BootStrap详解

Bootstrap简介 什么是BootStrap? BootStrap来自Twitter,是目前最受欢迎的响应式前端框Bootstrap是基于HTML、CSS、JavaScript的,它简洁灵活,使得Web开发更加快捷 为什么使用Bootstrap? 移动设备优先:自…

python学习笔记----判断语句(三)

一、布尔类型和比较运算符 1.1 布尔类型的字面量: True 表示真False 表示假 定义变量存储布尔类型数据: 变量名 布尔类型字面量 bool_1 True bool_2 False1.2 比较运算符 二、 if语句的基本格式 if 要判断的条件:条件成立时,要做的事…

【3GPP IAB】 3GPP支持IAB架构概述

1 概述 IAB用于回传链路的无线传输,对于NR高频尤其重要,3GPP协议讨论了IAB的可能架构和部署方式,一起来看看吧。 2 IAB 功能和接口 IAB尽量重用为接入定义的现有功能和接口。特别是,移动终端(MT)、gNB- DU、gNB- CU、UPF、AMF和S…

DFR初识

【0】前言 【1】什么Web的开发模式 web开发模式 目前主流的web开发模式有两种: 基于服务端渲染的传统web开发模式 - -前后端混合:BBS项目,图书管理系统-模板语言:dtl-flask,fastapi-go gin-vue,react-微信…

Stylus 精讲:掌握这款 CSS 预处理器,让你的样式编写提升到新境界!

Stylus 是一种先进的 CSS 预处理器,它允许你使用更加强大和优雅的方式来编写 CSS。Stylus 拥有很多现代语言所具有的特性,如混合(Mixins)、函数、条件语句等,这些特性使得 CSS 的编写变得更加灵活和高效。Stylus 还支持…

如何用OceanBase的 Load Data 导入CSV文件

0 前言 CSV文件(Comma-Separated Values,字符分隔值)是一种普遍采用的数据存储格式,有不少企业和机构都用它来进行数据的管理和存储。身为开发者,您可能经常遇到这样的需求:需要将CSV的数据导入OceanBase数…

信创需求激增,国产服务器操作系统赋能数字化转型

信创,即信息技术应用创新,是指在关键领域和环节推进信息技术的自主创新,构建安全可控的信息技术体系。随着数字化转型的加速,信创需求激增,国产服务器操作系统在其中扮演着至关重要的角色。国产服务器操作系统如何赋能…

使用Pandas从Excel文件中提取满足条件的数据并生成新的文件

目录 一、引言 二、环境准备 三、读取Excel文件 四、数据筛选 五、保存为新的Excel文件 六、案例与代码总结 七、进阶用法与注意事项 八、结语 在数据处理的日常工作中,我们经常需要从大量数据中筛选出满足特定条件的数据集。Pandas是一个强大的Python数据分…

LeetCode题练习与总结:单词搜索--79

一、题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水…

Airmail 5 for Mac:高效电子邮件管理软件

Airmail 5 for Mac作为一款功能强大的电子邮件客户端软件,为Mac用户带来了全新的邮件管理体验。其高效、直观的操作界面,使得用户可以轻松管理各类邮件,提升工作效率。 Airmail 5 for Mac v5.7.4中文激活版 首先,Airmail 5支持多个…

二叉搜索树(Binary_Search_Tree)

文章目录 二叉搜索树概念二叉搜索树的操作查找插入删除 二叉搜索树的应用二叉搜索树的实现K模型KV模型 二叉搜索树的性能分析 二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空&a…

计算机网络面试高频:输入域名会发生那些操作,开放性回答

更多大厂面试内容可见 -> http://11come.cn 计算机网络面试高频:输入域名会发生那些操作,开放性回答 输入域名之后,会发生哪些操作? 当在浏览器中输入www.baidu.com并按下回车键时,会触发一系列复杂的网络过程&am…

MMSeg搭建自己的网络

配置结构 首先,我们知道MMSeg矿机的配置文件很多,主要结构如下图所示。 在configs/_base_下是模型配置、数据集配置、以及一些其他的常规配置和运行配置,四类。 configs/all_config目录下存放,即是将四种配置聚合在一起的一个总…

互联网的下个风口可能是供应链和B2B行业的创新

6年前我写过一篇文章叫做《所有B2B从业者都会遇到的9个问题》,这篇文章也同步发布在了我的知乎以及CSDN博客上面。几个平台陆续有读者通过私信和留言向我咨询一些问题,刚好这2年我对B2B又有了一些新的思考,于是就针对前些年的那篇文章做一些补…

ubuntu22.04安装TensorRT(过程记录)

重要说明:此贴经过多次修改。第一次安装的的为trt8.6.1版本。第二次安装的10.0.0.6版本。有些地方可能没改过来,比如链接向导,我懒得改了,但是流程是对的。 cuda和cudnn版本对应关系 tensorRT历史发行版本 CUDA历史发行版本 cudn…

【Linux】make 和 makefile

进度条 #pragma once#include <stdio.h>#define NUM 102 #define BODY #define TOP 100 #define RIGHT >extern void processbar(int rate);#include "processBar.h" #include <string.h> #include <unistd.h>const char lable[] "|/-\…
最新文章