两台服务器间文件如何传输?对于小文件,可以先从Linux服务器传到window,再传到另一台服务器。对于大的文件,如测序数据、比对文件等。这样的方法显然太笨。

scp一个命令就能解决。

一、上传

常规操作

从当前服务器上传到另一个服务器。

# 文件
$ scp file yourname@192.168.0.101:your/path
# 目录
$ scp -r dir yourname@192.168.0.101:your/path

以上端口默认是22的,能满足我们大部分需求。然,当你在服务器上做过端口映射(或者外网连接地址),端口就不是22的情况时,需要指定目标端口号。

$ scp -P 10001 file  yourname@192.168.0.101:your/path

以上,回车后会提示你输入目标服务器的密码。如果没反应,八成是连接有问题。可先ping下两台服务器的网络,是否正常。

建议

虽然可传输文件夹(目录),但对于大文件建议还是压缩后再传,提高传送速度。大文件压缩工具推荐pigz(搭配tar使用),压缩速度很快,且压缩率不输于其他软件。

$ tar -cvf - test |pigz -k >test.tar.gz

另外,涉及到任何文件传送,注意有md5相匹配,养成良好习惯。

$ md5sum test.tar.gz >md5

后台运行

Linux间传输的另一个最大优点,就是可以将任务放后台运行,无需等待。

但是你如果直接在上面scp加上nohup scp... &是不起作用的。这里需要一点Linux的基础。

首先运行scp:

$ nohup scp file  yourname@192.168.0.101:your/path
# nohup可省略

输入密码后,输入ctrl+z挂起。

再输入bg使进程在后台运行。

$ bg
#或 %1,表示后台第一个工作号, %可忽略
$ bg %1

注意在这里虽然任务已在后台运行,但如果你此时关闭当前会话窗口或客户端,任务是不会继续执行的。这显然不是我们真正想要的,我有过教训。

如何让任务真正在后台运行,即关闭窗口后还能继续?

只需在上面一步基础上再加上disown -h将作业忽略HUP信号(从当前的shell中移除作业)。

# 查看任务
$ jobs
$ disown -h
#或
$ disown -h %1
# 若有多个任务,可选择
$ disown -h %2 # 查看任务运行状态和父进程号
$ ps -ef|grep scp
# 退出
$ exit

这时,即使你断开会话任务,任务仍然可在后台运行。

disown参数解析:

-h    标记每个作业标识符,这些作业将不会在shell接收到sighup信号时接收到sighup信号。
-a 移除所有的作业。
-r 移除运行的作业。

二、下载

从目标服务器下载文件到当前服务器。

$ scp yourname@192.168.0.101:/home/test.txt /your/path

和上传文件很相似,不赘述。

https://www.cnblogs.com/no7dw/archive/2012/07/07/2580307.html

https://www.cnblogs.com/jyzhao/p/6253728.html

https://www.jianshu.com/p/76221b8b1af8

https://blog.csdn.net/qq_29307291/article/details/72819802

http://c.biancheng.net/view/1079.html

如何使用scp在Linux服务器的后台传输文件?的更多相关文章

  1. SCP,scp linux2台机器之间如何传输文件

    关键词:scp 转自: http://blog.csdn.net/gatieme https://blog.csdn.net/gatieme/article/details/51673229 scp传 ...

  2. 在linux下一般用scp这个命令来通过ssh传输文件

    在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件scp username@servername:/path/filename /var/www/local_dir(本地 ...

  3. 向linux服务器上传下载文件方式收集

    向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ...

  4. Linux下不借助工具实现远程linux服务器上传下载文件

    # Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...

  5. 使用scp命令,不同服务器之间拷备文件

    使用scp命令,不同服务器之间拷备文件 先将源服务器,目标服务器安装scp服务 yum -y install openssh-clients 命令格式 scp source dist usage: s ...

  6. SpringBoot读取Linux服务器某路径下文件\读取项目Resource下文件

    // SpringBoot读取Linux服务器某路径下文件 public String messageToRouted() { File file = null; try { file = Resou ...

  7. 用scp这个命令来通过ssh传输文件

    小结: 1. upload files 到 ssh 服务器 localhost $ scp localfile root@172.20.34.**:~/remotepath 2. 从 ssh 服务器d ...

  8. 转自ruby迷: 使用Net::SSH和Net::SCP编写Linux服务器管理脚本

    试了一下perl下安装ssh模块,整了半天linux/window上都装不上,各依赖模块的版本总是匹配不上,后改了一下思路,用ruby吧 Net::SSH和Net::SCP是两个Ruby操作SSH的g ...

  9. 从Linux服务器下载上传文件

    首先要确定好哪两种的连接:Linux常用的有centors和unbantu两种版本,PC端Mac和Windows 如果在两个Linux之间传输,或Linux和Mac之间传输可以使用scp命令,类似于s ...

随机推荐

  1. 【UE4 C++】解析与构建 XML 数据,XmlParser 与 tinyxml

    XmlParser 简单读取 XmlParser 为引擎自带模块 XML 文件 <?xml version="1.0" encoding="UTF-8"? ...

  2. 【数据结构与算法Python版学习笔记】图——词梯问题 广度优先搜索 BFS

    词梯Word Ladder问题 要求是相邻两个单词之间差异只能是1个字母,如FOOL变SAGE: FOOL >> POOL >> POLL >> POLE > ...

  3. Manjaro安装Mariadb

    Mariadb是MySQL的一个复刻.由于MySQL被Oracle公司收购,MySQL的一些原始开发者担心MySQL会有开源方面的某些隐患,故领导开发了Mariadb. 如今,Mariadb已经作为许 ...

  4. Python网络爬虫实战入门

    一.网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序. 爬虫的基本流程: 发起请求: 通过HTTP库向目标站点发起请求,也就是发送一个Request ...

  5. P2472 [SCOI2007]蜥蜴(最大流)

    P2472 [SCOI2007]蜥蜴 自己第一道独立做题且一遍AC的网络流题纪念... 看到这道题我就想到网络流建图的方式了... 首先根据每个高度,我们将每个点拆成两个点限流.之后根据跳的最大距离, ...

  6. Oracle日志 归档模式管理

    一.查看当前归档模式 archive log list; 二.归档/不归档切换 shutdown immediate; -- 或shutdown normal startup mount; alter ...

  7. 释放 cached 内存

    巡检服务器发现内存可用很少了 top 命令查看是没有占用大内存的进程,cached特别大,释放cached就可以了 可用内存= free + buffers + cached 以下方法可以释放cach ...

  8. 单自由度系统中质量、阻尼和刚度变化对频率响应函数(FRF)影响图的绘制

    作者:赵兵 日期:2020-02-17 目录 单自由度系统中质量.阻尼和刚度变化对频率响应函数(FRF)影响图的绘制 1.     背景 2.     VISIO绘制 3.     Matlab绘制 ...

  9. Redis INFO CPU 信息详解

    一.INFO CPU 通过INFO CPU命令可以查看Redis进程对于CPU的使用情况,如下: 这几个字段的含义如下所示: used_cpu_sys: System CPU consumed by ...

  10. Vuex状态管理——任意组件间通信

    核心概念 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信. 每一个 Vuex 应用的 ...