Linux命令:文件传输命令scp详解_scp命令

Linux scp 命令详解

scp(Secure Copy Protocol)是 Linux 下用于在本地主机与远程主机之间(或两个远程主机之间)安全复制文件和目录的命令。它基于 SSH 协议进行加密传输,比传统的 cp 或 rcp 更安全(rcp 不加密)。scp 传输时会占用较少资源,适合小文件众多或系统负载高的场景,但速度可能略慢于 rsync。

scp 默认使用 SSH 的端口 22,需要远程主机开启 SSH 服务,并确保有正确的权限(通常需配置 SSH 免密登录以避免每次输入密码)。

基本语法

scp [选项] 源路径 目标路径
  • 源路径和目标路径格式:
  • 本地路径:直接写文件/目录路径(如 /home/file.txt
  • 远程路径:用户@主机:路径(如 root@192.168.1.100:/home/file.txt
  • 如果省略用户名,默认使用当前用户。
  • 从本地复制到远程:本地路径在前,远程路径在后。
  • 从远程复制到本地:远程路径在前,本地路径在后。

常用选项

选项说明
-r递归复制,用于复制目录及其所有内容(必须加,否则目录会报错)。
-p保留原文件的修改时间、访问时间和权限模式。
-P port指定远程主机的 SSH 端口(大写 P,默认 22)。
-C启用压缩传输,适合大文件或慢网络,可加快速度。
-v详细模式,显示调试信息,用于排查连接问题。
-q安静模式,不显示进度条和警告信息。
-l limit限速传输(单位 Kbit/s,例如 -l 800 限制为 100KB/s)。
-i key指定私钥文件,用于密钥认证(例如 -i ~/.ssh/id_rsa)。
-o option传递 SSH 选项(如 -o StrictHostKeyChecking=no)。
-O使用旧版 SCP 协议(兼容老服务器)。

实用示例

  1. 本地文件上传到远程主机
   scp /本地/文件.txt user@192.168.1.100:/远程/目录/

示例:上传当前目录下的 test.txt 到远程 /home/user/

   scp test.txt root@192.168.1.100:/home/user/
  1. 本地目录上传到远程主机(递归)
   scp -r /本地/目录/ user@192.168.1.100:/远程/目录/

示例:上传整个 logs 目录

   scp -r /var/logs/ root@192.168.1.100:/backup/
  1. 从远程主机下载文件到本地
   scp user@192.168.1.100:/远程/文件.txt /本地/目录/

示例:下载远程配置文件到当前目录

   scp root@192.168.1.100:/etc/nginx/nginx.conf ./
  1. 从远程主机下载目录到本地(递归)
   scp -r user@192.168.1.100:/远程/目录/ /本地/目录/

示例:下载整个 web 目录

   scp -r root@192.168.1.100:/var/www/html/ ./backup/
  1. 指定非默认端口(例如 2222)
   scp -P 2222 文件.txt user@主机:/路径/
   scp -P 2222 -r 目录/ user@主机:/路径/
  1. 启用压缩 + 保留属性 + 限速
   scp -C -p -l 1024 大文件.zip user@主机:/路径/
  1. 两个远程主机之间直接复制(通过本地中转)
   scp user1@主机1:/文件.txt user2@主机2:/路径/

(数据会经过本地主机中转,如果不想中转可加 -3 选项强制本地路由)

  1. 使用密钥认证(免密码)
    先配置 SSH 密钥,然后:
   scp -i ~/.ssh/id_rsa 文件.txt user@主机:/路径/

注意事项

  • scp 会覆盖目标同名文件,谨慎操作。
  • 如果网络慢或文件大,推荐加 -C 压缩。
  • 对于大量小文件,scp 比 rsync 更不占资源。
  • 出错常见原因:SSH 未开启、端口不对、权限不足、防火墙阻塞。
  • 调试时加 -v 查看详细日志。
  • 现代 OpenSSH 默认使用 SFTP 协议(更快更安全),旧服务器可能需 -O 使用传统 SCP。

scp 是日常运维中非常实用的文件传输工具,结合 SSH 密钥可实现自动化。如果你的场景涉及断点续传或同步,建议考虑 rsync 或 sftp。

有具体传输场景或问题,可以提供更多细节,我再帮你优化命令!

文章已创建 3250

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部