SCP(Secure Copy Protocol)命令详解

SCP 是基于 SSH 协议的安全文件传输工具,用于在本地主机和远程主机之间(或两个远程主机之间)加密传输文件。以下是 SCP 的详细用法及常见场景:


基本语法

scp [选项] 源文件 目标路径

常见场景

  1. 本地 → 远程

    scp /本地/文件路径 user@remote_host:/远程/目标路径
    
  2. 远程 → 本地

    scp user@remote_host:/远程/文件路径 /本地/目标路径
    
  3. 远程 → 远程

    scp user1@host1:/路径/文件 user2@host2:/目标路径
    

常用选项

选项 说明
-P <端口> 指定 SSH 端口(默认 22,注意是大写 P
-r 递归复制整个目录(含子目录和文件)
-C 启用压缩传输(节省带宽,适合大文件)
-p 保留文件原始属性(修改时间、权限等)
-q 静默模式(不显示传输进度)
-v 显示详细传输过程(调试用)
-l <速率> 限制带宽(单位:Kbit/s,如 -l 100
-i <密钥> 指定 SSH 私钥文件(默认 ~/.ssh/id_rsa

示例

  1. 复制本地文件到远程服务器(非默认端口)

    scp -P 2222 ~/file.txt user@example.com:/home/user/
    
  2. 递归复制目录到远程服务器

    scp -r /本地/dir user@example.com:/远程/路径
    
  3. 从远程服务器下载文件到本地

    scp user@example.com:/远程/file.txt ~/下载/
    
  4. 保留文件属性并启用压缩

    scp -Cp file.txt user@example.com:/目标路径
    
  5. 使用密钥认证传输

    scp -i ~/.ssh/custom_key.pem file.txt user@example.com:~
    
  6. 限制带宽为 100 Kbit/s

    scp -l 100 largefile.iso user@example.com:~
    

注意事项

  1. 路径格式

    • 远程路径格式:user@host:path:后直接跟路径,无空格。
    • 路径含空格时需用引号包裹:scp "user@host:'remote file.txt'" .
  2. 权限问题

    • 确保对源文件有读取权限,对目标路径有写入权限。
    • 若使用密钥认证,需设置私钥权限为 600

      chmod 600 ~/.ssh/id_rsa
      
  3. 安全性

    • SCP 依赖 SSH,默认使用加密传输。
    • 避免在命令行中直接写密码(建议配置 SSH 密钥免密登录)。
  4. 性能优化

    • 大文件传输建议结合 tar 压缩:

      tar czf - /大目录 | ssh user@host "tar xzf - -C /目标路径"
      

常见问题

  1. 连接超时或拒绝

    • 检查防火墙是否放行 SSH 端口。
    • 确认远程主机的 SSH 服务已启动。
  2. scp: command not found

    • 安装 OpenSSH 客户端:

      sudo apt install openssh-client  # Debian/Ubuntu
      sudo yum install openssh-clients # CentOS/RHEL
      
  3. 传输中断

    • 使用 rsync 代替 SCP 支持断点续传:

      rsync -Pav -e "ssh -p 2222" file.txt user@host:/路径
      

通过 SCP 可以高效安全地传输文件,适合简单场景。对于复杂需求(如增量同步),建议使用 rsyncsftp

Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-03-11 10:42:02

results matching ""

    No results matching ""