当前位置:   article > 正文

Linux SCP命令详解

linux scp

前言

有时候不可避免的需要将文件复制到另外一台服务器上,那么这时就可以使用scp命令远程拷贝文件,scp命令是基于SSH协议,在复制的过程中数据都是加密过的,会比明文传输更为安全。

一.命令介绍

scp的帮助文档中查看命令的概述

  1. NAME
  2. scp — secure copy (remote file copy program)
  3. DESCRIPTION
  4. scp copies files between hosts on a network. It uses ssh(1) for data transfer, and uses the same
  5. authentication and provides the same security as ssh(1). scp will ask for passwords or passphrases if
  6. they are needed for authentication.
  7. File names may contain a user and host specification to indicate that the file is to be copied to/from
  8. that host. Local file names can be made explicit using absolute or relative pathnames to avoid scp
  9. treating file names containing ‘:’ as host specifiers. Copies between two remote hosts are also per‐
  10. mitted.

scp(secure copy)命令,主要功能是用来远程拷贝文件,可以在多台Linux系统之间复制文件或目录,有些类似于cp命令的功能,但复制的范围是网络上的另一台主机。  

二. 命令语法

  1. SYNOPSIS
  2. scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port]
  3. [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2

常用参数 

  1. -1 Forces scp to use protocol 1.
  2. -2 Forces scp to use protocol 2.
  3. -3 Copies between two remote hosts are transferred through the local host. Without this option
  4. the data is copied directly between the two remote hosts. Note that this option disables the
  5. progress meter.
  6. -4 Forces scp to use IPv4 addresses only.
  7. -6 Forces scp to use IPv6 addresses only.
  8. -B Selects batch mode (prevents asking for passwords or passphrases).
  9. -C Compression enable. Passes the -C flag to ssh(1) to enable compression.
  10. -c cipher
  11. Selects the cipher to use for encrypting the data transfer. This option is directly passed to
  12. ssh(1).
  13. -F ssh_config
  14. Specifies an alternative per-user configuration file for ssh. This option is directly passed
  15. to ssh(1).
  16. -i identity_file
  17. Selects the file from which the identity (private key) for public key authentication is read.
  18. This option is directly passed to ssh(1).
  19. -l limit
  20. Limits the used bandwidth, specified in Kbit/s.
  21. -o ssh_option
  22. Can be used to pass options to ssh in the format used in ssh_config(5). This is useful for
  23. specifying options for which there is no separate scp command-line flag. For full details of
  24. the options listed below, and their possible values, see ssh_config(5).
  25. AddressFamily
  26. BatchMode
  27. BindAddress
  28. CanonicalDomains
  29. CanonicalizeFallbackLocal
  30. CanonicalizeHostname
  31. CanonicalizeMaxDots
  32. CanonicalizePermittedCNAMEs
  33. CertificateFile
  34. ChallengeResponseAuthentication
  35. CheckHostIP
  36. Cipher
  37. Ciphers
  38. Compression
  39. CompressionLevel
  40. ConnectionAttempts
  41. ConnectTimeout
  42. ControlMaster
  43. -2 Forces scp to use protocol 2.
  44. -3 Copies between two remote hosts are transferred through the local host. Without this option
  45. the data is copied directly between the two remote hosts. Note that this option disables the
  46. progress meter.
  47. -4 Forces scp to use IPv4 addresses only.
  48. -6 Forces scp to use IPv6 addresses only.
  49. -B Selects batch mode (prevents asking for passwords or passphrases).
  50. -C Compression enable. Passes the -C flag to ssh(1) to enable compression.
  51. -c cipher
  52. Selects the cipher to use for encrypting the data transfer. This option is directly passed to
  53. ssh(1).
  54. -F ssh_config
  55. Specifies an alternative per-user configuration file for ssh. This option is directly passed
  56. to ssh(1).
  57. -i identity_file
  58. Selects the file from which the identity (private key) for public key authentication is read.
  59. This option is directly passed to ssh(1).
  60. -l limit
  61. Limits the used bandwidth, specified in Kbit/s.
  62. -o ssh_option
  63. Can be used to pass options to ssh in the format used in ssh_config(5). This is useful for
  64. specifying options for which there is no separate scp command-line flag. For full details of
  65. the options listed below, and their possible values, see ssh_config(5).
命令选项含义
-1使用ssh协议版本1
-2使用ssh协议版本2
-4使用ipv4
6使用ipv6
-B以批处理模式运行
-C使用压缩
-F指定ssh配置文件
-l指定带宽限制
-o指定使用的ssh选项
-P指定远程主机的端口号
-p保留文件的修改时间,访问时间和权限模式
-q不显示复制进度
-r以递归的方式进行复制

三. 参考实例


4.1 从本地远程复制到另一台服务器


4.1.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. scp /usr/local/nginx/conf/nginx.conf root@192.168.45.128:/usr/local/nginx/conf
  2. scp /usr/local/nginx/conf/nginx.conf root@192.168.45.128:/usr/local/nginx/conf/nginx.conf.backup
  3. scp /usr/local/nginx/conf/nginx.conf 192.168.45.128:/usr/local/nginx/conf
  4. scp /usr/local/nginx/conf/nginx.conf 192.168.45.128:/usr/local/nginx/conf.backup

4.1.2 拷贝目录到远程服务器
命令格式: 拷贝目录

第一种方式:指定用户名,将目录远程拷贝到另外一台服务器的指定目录下,需要使用-r参数表示递归操作,命令执行后再输入密码
scp -r local_folder remote_username@remote_ip:remote_folder

第二种方式:不指定用户名,将目录远程拷贝到另外一台服务器的指定目录下,需要使用-r参数表示递归操作,命令执行后再输入密码
scp -r local_folder remote_ip:remote_folder

案例演示:

  1. scp -r /tmp/ root@192.168.45.128:/
  2. scp -r /tmp/ 192.168.45.128:/


4.2 从远程复制到本地服务器
从 远程复制到本地,只要将从本地复制到远程的命令的后2个参数 调换顺序即可,一起来看下。

4.2.1 远程服务器的文件拷贝到本地


第一种方式:指定远程用户名@指定IP:要复制的文件到./,这里./表示将远程服务器上的文件拷贝到本地服务器的当前路径。
scp remote_username@remote_ip:remote_file ./

第二种方式:指定远程用户名@指定IP:要复制的文件到本地服务器指定用户名,指定目录等
scp remote_username@remote_ip:remote_file local_username@local_ip:local_folder

案例演示:

  1. scp root@192.168.45.128:/usr/local/nginx/conf/nginx.conf 
  2. /usr/local/conf/
  3. scp -r root@192.168.45.128:/usr/local/nginx/ root@192.168.45.166:/usr/local/


当然也可以拷贝目录,方法还是一样在前面加-r参数,这里就不再演示。

除了可以选择IP来拷贝文件,还可以使用主机名进行拷贝,前提需要先将hostname做hosts映射。

  1. cat /etc/hosts
  2. 192.168.45.166 localhost166
  3. 192.168.45.128 localhost128
  4. scp -r root@localhost128:/usr/local/nginx/ root@localhost166:/usr/local

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/748381
推荐阅读
相关标签
  

闽ICP备14008679号