scp使用方法

-1  强制scp命令使用协议ssh1

-2  强制scp命令使用协议ssh2

-4  强制scp命令只使用IPv4寻址

-6  强制scp命令只使用IPv6寻址

-B  使用批处理模式(传输过程中不询问传输口令或短语)

-C  允许压缩。(将-C标志传递给ssh,从而打开压缩功能) 

-p 保留原文件的修改时间,访问时间和访问权限。  

-q  不显示传输进度条。

-r  递归复制整个目录。

-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。

-c cipher  以cipher将数据传输进行加密,这个选项将直接传递给ssh。

-F ssh_config  指定一个替代的ssh配置文件,此参数直接传递给ssh。

-i identity_file  从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。

-l limit  限定用户所能使用的带宽,以Kbit/s为单位。

-o ssh_option  如果习惯于使用ssh_config(5)中的参数传递方式,

-P port  注意是大写的P, port是指定数据传输用到的端口号

-S program  指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

4.使用实例:

scp命令的实际应用概述:

从本地服务器复制到远程服务器:

(1) 复制文件:

命令格式:

scp local_file remote_username@remote_ip:remote_folder

或者

scp local_file remote_username@remote_ip:remote_file

或者

scp local_file remote_ip:remote_folder

或者

scp local_file remote_ip:remote_file

第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名

第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名

(2) 复制目录:

命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder

或者

scp -r local_folder remote_ip:remote_folder

第1个指定了用户名,命令执行后需要输入用户密码;

第2个没有指定用户名,命令执行后需要输入用户名和密码;

两台服务器都要安装scp才能传文件

yum install openssh-clients*   不是yum scp 啊

1、获取远程服务器上的文件

scp -P 2222 root@www.vpser.net:/root/lnmp0.4.tar.gz /home/lnmp0.4.tar.gz

上端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。 root@www.vpser.net 表示使用root用户登录远程服务器www.vpser.net,:/root/lnmp0.4.tar.gz 表示远程服务器上的文件,最后面的/home/lnmp0.4.tar.gz表示保存在本地上的路径和文件名。

2、获取远程服务器上的目录

scp -P 2222 -r root@www.vpser.net:/root/lnmp0.4/ /home/lnmp0.4/

上端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。-r 参数表示递归复制(即复制该目录下面的文件和目录);root@www.vpser.net 表示使用root用户登录远程服务器www.vpser.net,:/root/lnmp0.4/ 表示远程服务器上的目录,最后面的/home/lnmp0.4/表示保存在本地上的路径。

3、将本地文件上传到服务器上

scp -P 2222 /home/lnmp0.4.tar.gz root@www.vpser.net:/root/lnmp0.4.tar.gz

上端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。 /home/lnmp0.4.tar.gz表示本地上准备上传文件的路径和文件名。root@www.vpser.net 表示使用root用户登录远程服务器www.vpser.net,:/root/lnmp0.4.tar.gz 表示保存在远程服务器上目录和文件名。

4、将本地目录上传到服务器上

scp -P 2222 -r /home/lnmp0.4/ root@www.vpser.net:/root/lnmp0.4/

上 端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。-r 参数表示递归复制(即复制该目录下面的文件和目录);/home/lnmp0.4/表示准备要上传的目录,root@www.vpser.net 表示使用root用户登录远程服务器www.vpser.net,:/root/lnmp0.4/ 表示保存在远程服务器上的目录位置。

再说说wget:

wget是linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径
例如: # wget http://www.xxx.org/xxxx/xxx.tar.gz

简单说一下 -c 参数,这个也常用,可以断点续传, 如果不小心终止了,可以继续使用命令接着下载。
例如: # wget -c http://www.xxx.org/xxxx/xxx.tar.gz

SCP命令的基本语法   v p P C r l q

  1. scp source_file_name username@destination_host:destination_folder

SCP命令有很多可以使用的参数,这里指的是每次都会用到的参数。

用-v参数来提供SCP进程的详细信息

不带参数的基本SCP命令会在后台拷贝文件,除非操作完成或者有错误出现,否则用户在界面上是看不到任何提示信息的。你可以用“-v”参数来在屏幕上打印出调试信息,这能帮助你调试连接、认证和配置的一些问题。

  1. pungki@mint ~/Documents $ scp -v Label.pdf mrarianto@202.x.x.x:.

部分输出

  1. Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -t .
  2. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
  3. debug1: Reading configuration data /etc/ssh/ssh_config
  4. debug1: /etc/ssh/ssh_config line 19: Applying options for *
  5. debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
  6. debug1: Connection established.
  7. debug1: Host '202.x.x.x' is known and matches the RSA host key.
  8. debug1: Found key in /home/pungki/.ssh/known_hosts:1
  9. debug1: ssh_rsa_verify: signature correct
  10. debug1: Next authentication method: password
  11. mrarianto@202.x.x.x's password:
  12. debug1: Authentication succeeded (password).
  13. Authenticated to 202.x.x.x ([202.x.x.x]:22).
  14. Sending file modes: C0770 3760348 Label.pdf
  15. Sink: C0770 3760348 Label.pdf
  16. Label.pdf 100% 3672KB 136.0KB/s 00:27
  17. Transferred: sent 3766304, received 3000 bytes, in 65.2 seconds
  18. Bytes per second: sent 57766.4, received 46.0
  19. debug1: Exit status 0

从源文件获取修改时间、访问时间和模式

-p”参数会帮到把预计的时间和连接速度会显示在屏幕上。

  1. pungki@mint ~/Documents $ scp -p Label.pdf mrarianto@202.x.x.x:.

部分输出

  1. mrarianto@202.x.x.x's password:
  2. Label.pdf 100% 3672KB 126.6KB/s 00:29

用-C参数来让文件传输更快

有一个参数能让传输文件更快,就是“-C”参数,它的作用是不停压缩所传输的文件。它特别之处在于压缩是在网络传输中进行,当文件传到目标服务器时,它会变回压缩之前的原始大小。

来看看这些命令,我们使用一个93 Mb的单一文件来做例子。

  1. pungki@mint ~/Documents $ scp -pv messages.log mrarianto@202.x.x.x:.

部分输出

  1. Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
  2. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
  3. debug1: Reading configuration data /etc/ssh/ssh_config
  4. debug1: /etc/ssh/ssh_config line 19: Applying options for *
  5. debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
  6. debug1: Connection established.
  7. debug1: identity file /home/pungki/.ssh/id_rsa type -1
  8. debug1: Found key in /home/pungki/.ssh/known_hosts:1
  9. debug1: ssh_rsa_verify: signature correct
  10. debug1: Trying private key: /home/pungki/.ssh/id_rsa
  11. debug1: Next authentication method: password
  12. mrarianto@202.x.x.x's password:
  13. debug1: Authentication succeeded (password).
  14. Authenticated to 202.x.x.x ([202.x.x.x]:22).
  15. debug1: Sending command: scp -v -p -t .
  16. File mtime 1323853868 atime 1380425711
  17. Sending file timestamps: T1323853868 0 1380425711 0
  18. messages.log 100% 93MB 58.6KB/s 27:05
  19. Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
  20. Bytes per second: sent 58758.4, received 15.6
  21. debug1: Exit status 0

不用“-C”参数来拷贝文件,结果用了1661.3秒,你可以比较下用了“-C”参数之后的结果。

  1. pungki@mint ~/Documents $ scp -Cpv messages.log mrarianto@202.x.x.x:.

部分输出

  1. Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
  2. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
  3. debug1: Reading configuration data /etc/ssh/ssh_config
  4. debug1: /etc/ssh/ssh_config line 19: Applying options for *
  5. debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
  6. debug1: Connection established.
  7. debug1: identity file /home/pungki/.ssh/id_rsa type -1
  8. debug1: Host '202.x.x.x' is known and matches the RSA host key.
  9. debug1: Found key in /home/pungki/.ssh/known_hosts:1
  10. debug1: ssh_rsa_verify: signature correct
  11. debug1: Next authentication method: publickey
  12. debug1: Trying private key: /home/pungki/.ssh/id_rsa
  13. debug1: Next authentication method: password
  14. mrarianto@202.x.x.x's password:
  15. debug1: Enabling compression at level 6.
  16. debug1: Authentication succeeded (password).
  17. Authenticated to 202.x.x.x ([202.x.x.x]:22).
  18. debug1: channel 0: new [client-session]
  19. debug1: Sending command: scp -v -p -t .
  20. File mtime 1323853868 atime 1380428748
  21. Sending file timestamps: T1323853868 0 1380428748 0
  22. Sink: T1323853868 0 1380428748 0
  23. Sending file modes: C0600 97517300 messages.log
  24. messages.log 100% 93MB 602.7KB/s 02:38
  25. Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
  26. Bytes per second: sent 54813.9, received 97.0
  27. debug1: Exit status 0
  28. debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
  29. debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

看到了吧,压缩了文件之后,传输过程在162.5秒内就完成了,速度是不用“-C”参数的10倍。如果你要通过网络拷贝很多份文件,那么“-C”参数能帮你节省掉很多时间。

有一点我们需要注意,这个压缩的方法不是适用于所有文件。当源文件已经被压缩过了,那就没办法再压缩很多了。诸如那些像.zip.rarpictures.iso的文件,用“-C”参数就没什么意义。

选择其它加密算法来加密文件

SCP默认是用“AES-128”加密算法来加密传输的。如果你想要改用其它加密算法来加密传输,你可以用“-c”参数。我们来瞧瞧。

  1. pungki@mint ~/Documents $ scp -c 3des Label.pdf mrarianto@202.x.x.x:.
  2. mrarianto@202.x.x.x's password:
  3. Label.pdf 100% 3672KB 282.5KB/s 00:13

上述命令是告诉SCP3des algorithm来加密文件。要注意这个参数是“-c”(小写)而不是“-C“(大写)。

限制带宽使用

还有一个很有用的参数是“-l”参数,它能限制使用带宽。如果你为了拷贝很多文件而去执行了一份自动化脚本又不希望带宽被SCP进程耗尽,那这个参数会非常管用。

  1. pungki@mint ~/Documents $ scp -l 400 Label.pdf mrarianto@202.x.x.x:.
  2. mrarianto@202.x.x.x's password:
  3. Label.pdf 100% 3672KB 50.3KB/s 01:13

在“-l”参数后面的这个400值意思是我们给SCP进程限制了带宽为50 KB/秒。有一点要记住,带宽是以千比特/秒 (kbps)表示的,而8 比特等于1 字节

因为SCP是用千字节/秒 (KB/s)计算的,所以如果你想要限制SCP的最大带宽只有50 KB/s,你就需要设置成50 x 8 = 400

指定端口

通常SCP是把22作为默认端口。但是为了安全起见SSH 监听端口改成其它端口。比如说,我们想用2249端口,这种情况下就要指定端口。命令如下所示。

  1. pungki@mint ~/Documents $ scp -P 2249 Label.pdf mrarianto@202.x.x.x:.
  2. mrarianto@202.x.x.x's password:
  3. Label.pdf 100% 3672KB 262.3KB/s 00:14

确认一下写的是大写字母“P”而不是“p“,因为“p”已经被用来保留源文件的修改时间和模式(LCTT 译注:和 ssh 命令不同了)。

递归拷贝文件和文件夹

有时我们需要拷贝文件夹及其内部的所有文件/子文件夹,我们如果能用一条命令解决问题那就更好了。SCP用“-r”参数就能做到。

  1. pungki@mint ~/Documents $ scp -r documents mrarianto@202.x.x.x:.
  2. mrarianto@202.x.x.x's password:
  3. Label.pdf 100% 3672KB 282.5KB/s 00:13
  4. scp.txt 100% 10KB 9.8KB/s 00:00

拷贝完成后,你会在目标服务器中找到一个名为“documents”的文件夹,其中就是所拷贝的所有文件。“documents”是系统自动创建的文件夹。

禁用进度条和警告/诊断信息

如果你不想从SCP中看到进度条和警告/诊断信息,你可以用“-q”参数来静默它们,举例如下。

  1. pungki@mint ~/Documents $ scp -q Label.pdf mrarianto@202.x.x.x:.
  2. mrarianto@202.x.x.x's password:
  3. pungki@mint ~/Documents $

正如你所看到的,在你输入密码之后,没有任何关于SCP进度的消息反馈。进度完成后,你也看不到任何提示。

用SCP通过代理来拷贝文件

代理服务器经常用于办公环境,SCP自然是没有经过代理方面的配置的。当你的环境正在使用代理,那么你就必须要“告诉”SCP与代理关联起来。

场景如下:代理的地址是10.0.96.6,端口是8080。该代理还实现了用户认证功能。首先,你需要创建一个“~/.ssh/config”文件,其次把以下命令输入进该文件。

  1. ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

接着你需要创建一个同样包括以下命令的“~/.ssh/proxyauth”文件。

  1. myusername:mypassword

然后你就可以像往常一样使用SCP了。

请注意corkscrew可能还没有安装在你的系统中。在我的Linux Mint中,我需要首先先用标准Linux Mint安装程序来安装它。

  1. $ apt-get install corkscrew

对于其它的一些基于yum安装的系统,用户能用以下的命令来安装corkscrew。

  1. # yum install corkscrew

还有一点就是因为“~/.ssh/proxyauth”文件中以明文的格式包含了你的“用户名”和“密码”,所以请确保该文件只能你来查看。

选择不同的ssh_config文件

对于经常在公司网络和公共网络之间切换的移动用户来说,一直改变SCP的设置显然是很痛苦的。如果我们能放一个保存不同配置的ssh_config文件来匹配我们的需求那就很好了。

以下是一个简单的场景

代理是被用来在公司网络但不是公共网络并且你会定期切换网络时候使用的。

  1. pungki@mint ~/Documents $ scp -F /home/pungki/proxy_ssh_config Label.pdf
  2. mrarianto@202.x.x.x:.
  3. mrarianto@202.x.x.x's password:
  4. Label.pdf 100% 3672KB 282.5KB/s 00:13

默认情况下每个用户会把“ssh_config”文件放在“~/.ssh/config“路径下。用兼容的代理创建一个特定的“ssh_config”文件,能让你切换网络时更加方便容易。

当你处于公司网络时,你可以用“-F”参数,当你处于公共网络时,你可以忽略掉“-F”参数。

以上就是关于SCP的全部内容了,你可以查看SCPman页面来获取更多内容,请随意留下您的评论及建议。


via: http://www.tecmint.com/scp-commands-examples/

scp、wget的更多相关文章

  1. Shell命令-网络操作之基础之scp、wget

    文件及内容处理 - scp.wget 1. scp:用于不同主机之间复制文件 scp命令的功能说明 scp 命令用于 Linux 之间复制文件和目录.scp 是 secure copy 的缩写, sc ...

  2. linux命令:拷贝命令家族(cp、scp、rsync)

    Linux命令中:rsync和cp之间的区别 - 小 楼 一 夜 听 春 雨 - 博客园https://www.cnblogs.com/kex1n/p/7008178.html cp,scp,rsyn ...

  3. 【Linux命令】常用系统工作命令11个(echo、date、reboot、poweroff、wget、ps、top、pidof、kill、killall、pkill)

    目录 echo命令 date命令 reboot命令 poweroff命令 wget命令 ps命令 top命令 pidof命令 kill命令 killall命令 pkill命令 一.echo命令 ech ...

  4. scp、rsync、xsync

    scp. 拷贝完全相同 scp -r etc/hadoop/dfs.hosts root@192.168.121.134:/usr/local/hadoop/hadoop-2.7.6/etc/hado ...

  5. Curl命令、Elinks命令、lynx命令、Wget命令、lftp命令

    一.Curl命令 语法 curl(选项)(参数) 选项 -a/--append 上传文件时,附加到目标文件 -A/--user-agent <string> 设置用户代理发送给服务器 -a ...

  6. 39、wget、curl

    39.1.wget介绍: wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败, wget会不断的尝试,直到整个文件 ...

  7. 44、wget和curl的常用参数

    1.wget: wget是文件下载的工具: 不加任何参数是直接下载该文件: (1)-O: 将下载的文件指定为特定的文件名: wget -O baidu.html www.baidu.com --201 ...

  8. Linux4:useradd、userdel、passwd、groupadd、chgrp、chown、df、du、sort、wget

    useradd 添加新的用户账号,只有root账户可以操作 -d 目录:指定用户主目录(默认在home下),若此目录不存在可同时使用-m创建主目录 -g 用户组:指定用户所属的用户组 -G 用户组:指 ...

  9. linux 部分命令简单使用介绍-ssh、scp、less、tail、find、grep(持续添加)

    ssh 加密的网络协议,提供客户-服务模式. 登录                        ssh username@ip                        ssh ip #不提供用 ...

随机推荐

  1. 还是应该立个flag

    6月份 开通博客的想法很简单,就是决定要学习C++和算法,写博客作为督促自己的一个方式,因为还没有系统的学习,自认为写博客或见解有些力所不及,决定先从自己的一篇随笔开始,因为我知道自己一旦开始,就会坚 ...

  2. Day4-F-产生冠军 HDU - 2094

    有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C. 如果A打败了B,B又打败了 ...

  3. BUU pwn cn

    自己不细心,人家别的博客上写的明明没有那个冒号的,把linux命令好好学一学吧! nc后 ls 发现flag文件 cat就得到flag了

  4. Matplotlib 基本概念

    章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Mat ...

  5. 继OpenJDK 之后,OpenJFX也将迁移到 Git

    导读 近日 OpenJFX 项目负责人 Kevin Rushforth 提交了一份将 OpenJFX 迁移到 GitHub 的提案. OpenJFX 是 JavaFX 的开源实现.JavaFX 是一个 ...

  6. ssm web.xml文件解析

    转   以下为web.xml的配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:x ...

  7. 0103-springmvc的基本流程

    背景 现在的it研发,已经从管理系统时代迈入了互联网系统时代. 页面开发已经从基于JSP+struts转变为为前后端分离的方式(springMVC + JS): 思想 MVC mvc框架不仅适用于ja ...

  8. NIO组件 Selector(选择器)

    简介 使用Selector(选择器), 可以使用一个线程处理多个客户端连接. Selector 能够检测多个注册的通道上是否有事件发生(多个Channel以事件的方式可以注册到同一个Selector) ...

  9. VS2012 ffmpeg 没有定义的lrint

    在common.h #ifndef AVUTIL_COMMON_H#define AVUTIL_COMMON_H下添加 #define lrint(f) (f>=0?(int32_t)(f+(d ...

  10. Ubuntu上安装tftp服务

    1. 安装 sudo apt install tftpd-hpa 2.设置工作目录 mkdir ~/tftpdroot tftpdroot 3.修改配置文件 sudo vi /etc/default/ ...