Linux SCP命令详解

本文详细介绍了SCP命令,它允许用户在两个主机间安全复制文件和目录,通过SSH连接加密传输。文中阐述了其基本语法、特性,对参数进行详解,还给出多种命令用法示例,如本机与远程主机间复制文件、目录等,最后提及退出码和历史。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本语法

scp [-346ABCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target

命令介绍

  • SCP全称是:secure copy protocol,它是一个命令行工具,允许用户在两个主机之间安全的复制文件和目录。

  • 该协议确保文件的传输是加密的,以防止任何有可疑意图的人获得敏感信息。

  • SCP通过SSH连接加密传输,确保数据传输过程中不会被攻击。

  • 特性:简单、安全、在大多数unix系统下都是预安装的。

  • 远程主机指定path的形式:

    • [user@]host:[path]
    • scp://[user@]host[:port][/path]
  • 本机文件可以指定为绝对路径或相对路径。

  • scp默认加密算法是:AES-128

  • 为了能够复制和写入文件,主机至少要有读和写的权限。

  • scp在复制相同文件时,会默认进行覆盖,没有任何的警告提示。

  • 在复制大文件时,终端可能会睡眠终止传输过程,建议使用tmux来维持会话。

参数详解

  • -P 指定远程主机的端口
  • -p 复制文件时,保留原始文件的修改次数、访问次数和模式、创建时间等
  • -q 静默传输模式,禁用进度条输出信息和警告
  • -r 递归复制整个目录,复制目录时要传
  • -v debug模式,输出有用的debug连接、授权、配置等信息
  • -C 强制scp压缩文件传输,当文件已经是压缩文件时,此参数不生效,例如:.zip,.rar,.7zip等
  • -c 指定传输数据的加密算法
  • -l 限制使用的带宽
  • -3 两台远程主机之间的副本通过本地主机传输。如果没有这个选项,数据将直接在两个远程主机之间复制。注意,该选项禁用进度条并为第二台主机选择批处理模式,因为scp不能为两台主机请求密码或口令
  • -4 强制scp只使用ipv4地址
  • -6 强制scp只使用ipv6地址
  • -B 选择批处理模式(阻止终端询问ssh密码)
  • -F 指定ssh配置文件(ssh_config),这个选项会直接传给ssh
  • -i 指定读取用于公钥身份验证的标识(私钥)的文件

命令用法示例

  • 从本机复制文件到远程主机一般用法
    scp file.txt root@192.168.1.1:/dir
    
  • 从本机复制文件到远程主机的家目录
    scp file.txt root@192.168.1.1: (此处省略了远程目录,默认为主机的家目录,即:~)
    
  • 从本机复制文件到远程主机,指定复制后的文件名称
    scp file.txt root@192.168.1.1:file2.txt
    
  • 从本机复制文件到远程主机,指定远程主机的端口
    scp -P 24831 file.text root@192.168.1.1:
    
  • 从本机同时复制多个文件到远程主机
    scp file1.txt file2.txt file3.txt root@192.168.1.1:
    
  • 从本机复制目录到远程主机
    scp -r directory root@192.168.1.1:
    
  • 从本机复制文件到远程主机,保留源文件的属性
    scp -p file.txt root@192.168.1.1:
    
  • 从本机复制文件到远程主机,输出debug信息
    scp -v file.txt root@192.168.1.1:
    
  • 从本机复制文件到远程主机,静默传输
    scp -q file.txt root@192.168.1.1:
    
  • 从本机复制文件到远程主机,强制压缩文件
    scp -C -r directory root@192.168.1.1:
    
  • 从本机复制文件到远程主机,指定加密的算法
    scp -c 3des file.txt root@192.168.1.1:
    
  • 从本机复制文件到远程主机,限制带宽
    scp -l 400 file.txt root@192.168.1.1:
    限制传输速度为50kb/s
    需要记住的一点是,带宽是以千比特/秒(kbps)指定的。这意味着8位等于1字节
    
  • 从远程主机复制文件到本机一般用法
    scp root@192.168.1.1:file.txt .
    跟本机到远程主机用法相似,只是调换主机顺序
    
  • 从远程主机复制多个文件到本机
    scp root@192.168.1.1:'{file1.txt,file2.txt}' .
    scp root@192.168.1.1:\{file1.txt,file2.txt\} .
    
    以上只能复制同一个目录下的多个文件,要想复制不同目录的多个文件,需要使用空格分割文件,使用逗号包裹
    scp root@192.168.1.1:'/path/file1 /path2/file2 /path3/file3' .
    
  • 在两个远程主机之间复制文件

    有一个前提是scp不能为两台主机请求密码,且如果两台主机都带端口的情况,则必须使用-3选项,-3选项时,则scp会禁用进度条并为第二台主机选择批处理模式,所以第二台主机要配置公钥登录,不要使用密码

    • 不带端口的用法
      scp root@192.168.1.1:file.txt root@127.0.0.1:24831:
      以上两台主机传输数据不经过本机路由直接传输
      
    • 两台都带端口的用法,使用-3选项,并且使用URI的格式
      scp -3 scp://root@127.0.0.1:24831/~/file.txt scp://root@192.168.1.1:25891/~
      

退出码

0代表成功,大于0代表失败

历史

scp是基于rcp程序的BSD源代码,来自加州大学校董会
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值