优雅玩转实验室服务器(二)传输文件

使用服务器最重要的肯定是传输文件了,我们不仅需要本地的一些资源上传到服务器,好进行实验,也需要将服务器计算得到的实验结果传输到本地,来进行预览或者报告撰写。

首先,由于涉及到服务器操作,我强烈推荐把你的服务器的bash使用oh-my-zsh进行改造,教程在参考:汇尘轩​kirigaya.cn/blog/article?seq=66

文件传输有很多方法,本着优雅,省事,不装第三方软件的原则,简单讲讲本机PC和服务器进行文件传输的几种方法。


1、scp

这里的scp可不是scp基金会,而是一种网络的应用层协议,用于进行文件copy的。这也是我平时用得最多的方法。

使用方法:

复制代码
# 将本地文件copy到服务器
scp <本地文件路径> <用户名>@<公网IP>:<目标绝对路径>

# 将服务器上的文件传输到本地
scp <用户名>@<公网IP>:<目标绝对路径> <本地文件路径>

# 将本地文件夹copy到服务器
scp -r <本地文件夹路径> <用户名>@<公网IP>:<目标绝对路径>

# 将本地文件夹copy到服务器
scp -r <用户名>@<公网IP>:<目标绝对路径> <本地文件夹路径>

当然,这两个操作都是需要装载了ssh公钥或者输入密码的

下面简单演示一下如何传输。Windows主机桌面有一个test.py文件,我们把它上传到服务器的/home/test.py这个位置。 打开powershell:

进入服务器,发现成功传输:

如果默认传输后的文件同名,可以这么写:

复制代码
scp .\test.py <用户名>@<公网IP>:/home

home后面也可以加一个斜杠

限于篇幅,使用scp传输文件夹就不再演示了,但是需要注意,文件夹传输的文件覆盖问题。


2、sftp

对于大型文件而言,使用scp传输可能不一定是最佳方法。此时可以使用sftp------为文件传输设计的传输协议。

不同于scp,Windows上使用sftp传输文件之前必须建议sftp会话(这也就是为什么我不太喜欢用它的原因)。

建立会话:

复制代码
sftp <用户名>@<公网IP>

输入help,可以看到可用指令:

上传用put,下载用get。

假设我们现在要把刚刚的test.py上传到服务器,在test.py所在目录建立sftp会话后,输入:

复制代码
put test.py /home/test.py

如果想要下载服务器上的/home/images/bird.jpg到本地, 输入:

复制代码
get /home/images/bird.jpg bird.jpg

3、git

这个不用多说,你可以通过建立一个git仓库的方式,让发送端git push,接收端git pull的方式进行文件传输,如果你是AWS服务器用户,这个方法将会很有效。


4、wget

如果你的服务器是基于内网穿透获取的公网IPv4地址,那么scp和sftp对于超大文件传输(好几个G)可能不太稳定,会出现broken pipe的问题。这个时候使用wget会是一个很不错的选择。当然,前提是你有一个自己的有稳定公网IPv4地址的服务器。

简单科普一下,wget就是一个超级简化版本的发起GET请求的工具,它有两个主要的优点:

(1)支持请求重发:如果下载时发生了网络故障,wget进程不会立刻断开连接,而是会不断重新发起请求,直到达到设定值。

(2)支持断点续传:如果下载站点支持断点续传,那么wget可以接着上次未下载完成的地方继续下载,而不需要从头开始下载。

配合git,我们就可以做到非常稳定的大文件传输,具体做法很简单,把你的文件传到那个稳定IPv4地址的服务器,然后使用wget从那台服务器下载文件到实验室服务器,这个过程不会出现broken pipe的情况。

当然,前提是你的私人服务器已经使用了nginx


5、vscode

vscode自带一个ssh,具体如何使用,我会在下一章讲解。假设你已经通过了vscode的ssh连接,而且使用vscode打开了两个工作区,你可以直接通过拖动或者ctrl c ctrl v的方法来让两个工作区的文件进行传输,非常好用~:

相关推荐
极简网络科技21 分钟前
Docker、Wsl 打包迁移环境
运维·docker·容器
黑客老李26 分钟前
JavaSec | SpringAOP 链学习分析
java·运维·服务器·开发语言·学习·apache·memcached
杨浦老苏26 分钟前
轻量级Docker管理工具Docker Switchboard
运维·docker·群晖
江湖有缘29 分钟前
【Docker管理工具】部署Docker可视化管理面板Dpanel
运维·docker·容器
这儿有一堆花1 小时前
安全访问家中 Linux 服务器的远程方案 —— 专为单用户场景设计
linux·服务器·安全
RussellFans1 小时前
Linux 文本三剑客(grep, awk, sed)
linux·运维·服务器
猴哥聊项目管理2 小时前
什么是DevOps智能平台的核心功能?
运维·项目管理·制造·devops·软件·项目管理软件·软件分享
Chuncheng's blog2 小时前
CentOS 7如何编译安装升级gcc至7.5版本?
linux·运维·c++·centos
听风吹等浪起2 小时前
CentOS在vmware局域网内搭建DHCP服务器【踩坑记录】
linux·服务器·centos
aitav02 小时前
⚡️ Linux Docker 基本命令参数详解
linux·运维·docker