[转]12个scp传输文件的命令栗子

原文地址: 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 [email protected]_host.com:/some/remote/directory 

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

1 $ scp [email protected]_host.com:/some/remote/directory ~/my_local_file.txt
2
3 # just download the file
4 $ scp [email protected]:/some/path/file.txt .

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

一、详细输出

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

  栗子:

1 $ scp -v ~/test.txt [email protected]:/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 [email protected]:/path/directory/

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

  栗子:

1 $ scp [email protected]:/path/directory/\{foo.txt,bar.txt\} .
2
3 $ scp [email protected]:~/\{abc.log,cde.txt\} .

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

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

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

1 $ scp -v -r ~/Downloads [email protected]:/root/Downloads

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

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

1 $ scp [email protected]:/some/remote/dir/foobar.txt [email protected]:/some/remote/dir/

五、用压缩来加快传输

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

  栗子如下:

1 $ scp -vrC ~/Downloads [email protected]:/root/Downloads

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

六、限制带宽的使用

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

  栗子如下:

1 $ scp -vrC -l 400 ~/Downloads [email protected]:/root/Downloads

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

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

  栗子如下:

1 $ scp -vC -P 2200 ~/test.txt [email protected]:/some/path/test.txt

八、保存文件属性

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

  举例如下:

1 $ scp -C -p ~/test.txt [email protected]:/some/path/test.txt

九、安静模式

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

  栗子如下:

1 $ scp -vCq ~/test.txt [email protected]:/some/path/test.txt

十、特殊标识文件

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

  举个栗子:

1 $ scp -vCq -i private_key.pem ~/test.txt [email protected]:/some/path/test.txt

十一、使用不同的ssh_config文件

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

  栗子如下:

1 $ scp -vC -F /home/user/my_ssh_config ~/test.txt [email protected]:/some/path/test.txt

十二、使用不同的加密

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

  举个栗子:

1 $ scp -c blowfish -C ~/local_file.txt [email protected]:/remote/path/file.txt

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

总结

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

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

原文地址:https://www.cnblogs.com/mianbaoshu/p/8480377.html

时间: 2024-10-11 11:30:49

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

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

背景 使用expect+scp去跨机器传输文件,(别问我为什么,因为公司的测试机器都是通过堡垒机的,无法绕开堡垒机,只能暂时使用这个方法了),结果发现从A传递到B的tar.gz文件大小不一致了的,当时心里MMP了 步骤 1. 发现不是每次都会丢失文件,理论上网络稳不稳定只会造成传输时间的不同罢了: 2. 查阅资料发现expect的默认时间是30s,所以如果操作了30s的话,就会自行链接,原来如此: 3. 修改默认的连接时间为-1,就是说无限长的时间,具体如下: /usr/local/bin/ex

linux scp传输文件命令

scp  -r /opt/test root@192.168.2.105:/opt 原文地址:https://www.cnblogs.com/LynnChen/p/10620576.html

scp 传输文件报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

scp /home/oracle/dump/expdp_torc_gsp_20160914_*.dmp [email protected]:/data/dump @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

scp传输文件,自动填充密码

一个偷懒的小shell, #!/usr/bin/expect #************************************************************************* # > File Name: expect.sh # > Author: chenglee # > Main : [email protected] # > Blog : http://www.cnblogs.com/chenglee/ # > Created Tim

SCP实现无需密码传输文件

SCP概述 Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同 CP ----- 主要是用于在同一台电脑上,在不同的目录之间来回copy文件 SCP --- 主要是在不同的Linux系统之间来回copy文件 下面我们就主要讲一下SCP命令的基本用法: scp 传输文件路径 用户名@传输文件目标IP:目标路径(可以指定新的文件名) 在Linux环境下,两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方linux主机文件的时候都需要手

Python不同电脑之间传输文件实现类似scp功能不输密码

SCP vs SFTP 通过paramiko还可以传输文件,如何通过paramiko在计算机之间传输文件,通过阅读官方文档,发现有如下两种方式: sftp = paramiko.SFTPClient.from_transport(ssh.get_transport()) sftp = ssh.open_sftp() 即新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证. 文件上传 In [59]: sftp.put('memor

Linux scp 免密码 传输文件

Linux scp 免密码 传输文件 背景介绍 最近项目是集群化部署(由 node1,node2,node3 三台 CentOS 7.4 的虚拟机构成). 但是,涉及到跨机器同步文件的问题,想通过写shell文件实现,用 crontab 设置定时任务,定时执行改脚本. 由于每次都需要输入密码,导致定时任务没法正常工作,因此,需要三台机器之间可以免密码互相访问. 建立SSH的信任关系 以实现 node1 免密码给 node2 scp传输文件为例说明,需要如下几个步骤: 1.生成 node1 的秘钥

兼容所有系统的局域网传输文件通用方法

既然要通讯,那么必须有服务器和客户端.本文使用sshd做服务器,scp做客户端. 接受文件的一方必须使用sshd启动并绑定本机局域网端口,如0.0.0.0:22 绑定方法就是配置/etc/ssh/sshd_config这个配置文件,如果A(windows/linux/macos)向B(windows/linux/macos)发送文件,那么有两种方式: 假设A的用户名为userA,IP为192.168.1.10,文件路径/1.txt A运行sshd服务/usr/sbin/sshd,B运行scp [

Linux基础之-网络配置,主机名设置,ssh登陆,scp传输

一. 网络配置修改 1.临时修改(ip,dns,netmask,gateway) 临时修改网络配置,只要没有涉及到修改配置文件的,在network服务重启后,所有设置失效 2.永久修改(ip,dns,netmask,gateway) 修改网络配置文件"ifcfg-ens33",保存后就会永久生效 二. 集群内机器hostname及域名的设定 三. ssh登陆 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SS