原文地址: https://www.cnblogs.com/voidy/p/4215891.html

copy原文是为了修改部分错误以及便于记录自己的笔记。英文原文点:这里

安全复制

  Scp(Secure Copy)是一个在各个主机之间进行复制或者文件传输的一个命令行工具。它使用一种同ssh一样的安全机制。事实上,它在后台使用ssh连接来进行文件的传输。scp既指一种定义安全复制应该如何工作的协议,也指一种可以被安装的作为OpenSSH工具套的一部分的软件或是指令。
  在这篇简单的教程中,我们可以看到一些scp指令的栗子以及如何使用它进行安全的文件传输。

使用scp

  scp的基础语法很容易记忆,它看起来就像酱紫:

1 $ scp source_file_path destination_file_path

  根据不同的主机,文件路径应该包扩:完整的主机地址,端口号,用户名,密码以及文件路径。
  所以如果你正在从你的本地计算机“发送”文件到远程计算机(上传)的语法是这样的:

1 $ scp ~/my_local_file.txt user@remote_host.com:/some/remote/directory 

  当从远程主机复制文件到本地主机(下载),他看起来正好相反:

1 $ scp user@remote_host.com:/some/remote/directory ~/my_local_file.txt
2
3 # just download the file
4 $ scp user@192.168.1.3:/some/path/file.txt .

  这里很多是有关用scp来完成常规任务的。除了这些,scp也支持很多其他的选项和功能。让我们快速看一下他们的综述。
  没错,默认情况下,scp总是覆盖目标地址的文件。如果你想避免它,那就使用功能更为强大的rsync工具吧。

一、详细输出

  有了详细的输出,SCP的程序将输出大量关于它在后台做什么的信息。当程序失败或无法完成请求时这是非常有用的。详细的输出将正确的指明该程序哪里出了问题。

  栗子:

1 $ scp -v ~/test.txt root@192.168.1.3:/root/help2356.txt
2 Executing: program /usr/bin/ssh host 192.168.1.3, user root, command scp -v -t /root/help2356.txt
3 OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013
4 debug1: Reading configuration data /home/enlightened/.ssh/config
5 debug1: Reading configuration data /etc/ssh/ssh_config
6 debug1: /etc/ssh/ssh_config line 19: Applying options for *
7 debug1: Connecting to 192.168.1.3 [192.168.1.3] port 22.
8 debug1: Connection established.
9 ..... OUTPUT TRUNCATED

  输出的信息将会很多,而且包含有关连接如何建立,正在使用什么配置和认证文件等等的详细信息。

二、多文件传输

  多个文件可以像下面那样用空格分隔开
  栗子:

1 $ scp foo.txt bar.txt username@remotehost:/path/directory/

  从远程主机复制多个文件到当前目录

  栗子:

1 $ scp username@remotehost:/path/directory/\{foo.txt,bar.txt\} .
2
3 $ scp root@192.168.1.3:~/\{abc.log,cde.txt\} .

三、复制整个文件夹(递归)

  为了从一个主机往另一个主机复制整个文件夹,需要使用-r 并且指定目录

  -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .
  栗子如下:

1 $ scp -v -r ~/Downloads root@192.168.1.3:/root/Downloads

四、在两个远程主机之间复制文件

  scp也可以把文件从一个远程主机复制到另一个远程主机。
  举个栗子:

1 $ scp user1@remotehost1:/some/remote/dir/foobar.txt user2@remotehost2:/some/remote/dir/

五、用压缩来加快传输

  一个用于加快传输,节省时间和带宽的超酷的选项!你所需要做的就是用C选项来启用压缩功能。该文件在传输过程中被压缩,在目的主机上被解压缩。

  栗子如下:

1 $ scp -vrC ~/Downloads root@192.168.1.3:/root/Downloads

  在上面的栗子中我们开启压缩选项移动了整个文件夹。速度的增长取决于多少文件能被压缩。

六、限制带宽的使用

  如果你不想scp占用所有的带宽,那么用选项“l”来限制最大传输速度,Kbit/s

  栗子如下:

1 $ scp -vrC -l 400 ~/Downloads root@192.168.1.3:/root/Downloads

七、在远程主机上连接一个不同的端口

  如果远程服务器有ssh守护进程运行在不同的端口上(默认是22),那么你需要告诉scp使用“-P”选项来使用指定的端口。

  栗子如下:

1 $ scp -vC -P 2200 ~/test.txt root@192.168.1.3:/some/path/test.txt

八、保存文件属性

  “-p”选项(小写),将会保存源文件的修改时间,访问时间以及方式。

  举例如下:

1 $ scp -C -p ~/test.txt root@192.168.1.3:/some/path/test.txt

九、安静模式

  在安静模式(“-q”选项),scp输出将会减少,并且不再显示进度表以及警告和诊断信息。

  栗子如下:

1 $ scp -vCq ~/test.txt root@192.168.1.3:/some/path/test.txt

十、特殊标识文件

  当使用基于秘钥认证(无密码)。你将使用特殊的包含私有秘钥的标识文件。这个选项直接传递到ssh命令并且以同样的方式工作。

  举个栗子:

1 $ scp -vCq -i private_key.pem ~/test.txt root@192.168.1.3:/some/path/test.txt

十一、使用不同的ssh_config文件

  用”F”选项指定不同的ssh_config文件

  栗子如下:

1 $ scp -vC -F /home/user/my_ssh_config ~/test.txt root@192.168.1.3:/some/path/test.txt

十二、使用不同的加密

  scp默认使用AES加密,有时候你可能想使用不同的加密。用不同的加密可能会加快转移过程,举例来说,blowfish和arcfour被认为比AES更快的存在(但是安全上不如AES)。

  举个栗子:

1 $ scp -c blowfish -C ~/local_file.txt username@remotehost:/remote/path/file.txt

  在上面的栗子中我们用blowfish加密并同时压缩,这可以得到显著的速度上的提升,当然也取决于可用的带宽。

总结

  尽管SCP在安全地传输文件方面是非常有效的,它缺乏一个文件同步工具必要的功能。它所能做的就是复制粘贴上述所有文件从一个位置到另一个位置。

  一个更强大的工具的Rsync它不仅具有SCP的所有功能,而且增加了更多的功能用来在2个主机智能同步文件。例如,它可以检查并上传只有修改过的文件,忽略现有的文件等等。

[转]12个scp传输文件的命令栗子的更多相关文章

  1. 12个scp传输文件的命令栗子

    12个scp传输文件的命令栗子 一直在用scp进行简单的远程复制文件的功能,今天无意间看到一篇介绍scp的文章,便想着学习学习并将其翻译了过来.原文戳这里.翻译不对的地方,敬请指正. 另外我最近搭建了 ...

  2. scp传输文件的命令

    scp传输文件的命令 一:scp常规的使用方式: scp可以进行简单的远程复制文件的功能.它是一个在各个主机之间进行复制或文件传输的一个命令工具.它使用一种同ssh一样的安全机制来进行文件的传输. 注 ...

  3. Linux 下 scp 传输文件脚本

    脚本执行效果: (1).远程传输本地 /ora_exp/dmp/CWDB_RAMS_* 文件至 11.4.24.21 的 /ora_exp/dmp 目录下.   脚本编写步骤: 假设 oracle 用 ...

  4. 【NXP开发板应用—智能插排】1.如何使用scp传输文件

    首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提供了一个非 ...

  5. 虚拟机使用scp传输文件提示“WARNING REMOTE HOST IDENTIFICATION HAS CHANGED”解决方式

    虚拟机使用scp传输文件提示"WARNING REMOTE HOST IDENTIFICATION HAS CHANGED"解决方式 简单的说就是虚拟机里保存的认证密钥不正确了,需 ...

  6. 利用scp传输文件

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

  7. scp 远程文件复制命令

    scp 远程文件复制工具 1.命令功能 scp用户在不同linux主机间复制文件,他采用ssh协议保障复制的安全性.scp复制是全量完整复制,效率不高,使用与第一次复制,增量复制建议rsync命令. ...

  8. scp 远程文件拷贝命令

    Linux scp命令用于Linux之间复制文件和目录. scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. 1.从本地复制到远程 命令格式: ...

  9. expect+scp传输文件发现文件丢失

    背景 使用expect+scp去跨机器传输文件,(别问我为什么,因为公司的测试机器都是通过堡垒机的,无法绕开堡垒机,只能暂时使用这个方法了),结果发现从A传递到B的tar.gz文件大小不一致了的,当时 ...

随机推荐

  1. sql生成可读性逻辑图

    下面这张图是我自己画的sql逻辑图.规定了一些画法.然后画出来是这样的. 因为经常要读别人的sql,又臭又长,可读性很差,于是想做一个程序自动生成的逻辑图. 为什么不用执行语法树,因为个人觉得语法树可 ...

  2. Go语言安装配置

    一.Go语言下载 官方下载地址:https://golang.google.cn/dl/ 选择自己需要的版本下载即可. 二.Go语言安装 下载完成之后,双击go1.16.4.windows-amd64 ...

  3. Linux(CentOS7)下rpm安装MySQL8.0.16

    记录一下自己在 CentOS7 下 rpm 安装 MySQL8.0.16 的过程. 一.准备工作 1. 下载MySQL所需要的安装包 从 MySQL官网 下载,上传至 CentOS 系统 /usr/l ...

  4. kind:Kubernetes in Docker,单机测试 Kubernetes 群集的最佳方案

    请访问原文发布链接:https://sysin.org/article/kind/,查看最新版. 作者:gc(at)sysin.org,主页:www.sysin.org 2021.04.28 更新,k ...

  5. EdgeX Foundry试运行

    EdgeX Foundry试运行 简介 EdgeX Foundry是一个由Linux基金会发起的,且厂商中立的开源IoT边缘计算项目.它可以采集来自多个源的数据,并将这些数据转发到一个中央系统.Edg ...

  6. skynet debug console 使用

    预读 关于如何使用 skynet 可以参考 wiki 文档 更多实战内容见 https://www.lanqiao.cn/courses/2770 优惠码:2CZ2UA5u 环境测试搭建 使用示例代码 ...

  7. Python+Selenium学习笔记4 - submit&get_attribute

    1.submit() submit()方法用于提交表单.如在搜索框输入关键字后按回车键进行查询操作,就可用submit()方法模拟.若不能按回车键进入下一步,则不能用submit()举例,百度的查询提 ...

  8. C# 尝试还原程序包是出错:找不到“XXXXX”版本的程序包“XXXXXX”

    在C#管理程序包的时候有时会出现找不到某某版本的程序包 如果出现这样的情况,解决办法是在你当前项目获取当前类库下的packages.config里去删除一段配置就可以解决! 我的缺少的是版本为9.0. ...

  9. JNDI注入和JNDI注入Bypass

    之前分析了fastjson,jackson,都依赖于JDNI注入,即LDAP/RMI等伪协议 JNDI RMI基础和fastjson低版本的分析:https://www.cnblogs.com/pia ...

  10. 十四、.net core(.NET 6)搭建ElasticSearch(ES)系列之给ElasticSearch添加SQL插件和浏览器插件

     给ES添加SQL插件的方法: 下载SQL插件地址:https://github.com/NLPchina/elasticsearch-sql 当前最新的是7.12版本,我的ES是7.13版本,暂且将 ...