当前位置: 首页 > article >正文

scp命令详解

前言

scp(Secure Copy)命令用于在本地和远程主机之间或两个远程主机之间安全地复制文件或目录。它基于 SSH 协议,因此文件传输过程中会进行加密。下面是 scp 命令的基本语法及常见用法,帮助你更好地理解如何使用它。

一. 基本语法

scp [options] source destination
  • source 是源文件或目录的路径,可以是本地路径或者远程路径。
  • destination 是目标文件或目录的路径,也可以是本地路径或远程路径。

二. 常见用法示例

1. 从本地复制文件到远程主机
scp /path/to/local/file username@remote_host:/path/to/remote/destination

例如,将本地的 abc.sh 文件复制到远程主机 192.168.100.20/root 目录:

scp /etc/abc.sh root@192.168.100.20:/root/
  • /etc/abc.sh:本地文件路径。
  • root@192.168.100.20:/root/:远程主机和目标目录。
2. 从远程主机复制文件到本地
scp username@remote_host:/path/to/remote/file /path/to/local/destination

例如,从远程主机 192.168.100.20 上的 /root/abc.sh 文件复制到本地的 /home/user/ 目录:

scp root@192.168.100.20:/root/abc.sh /home/user/
3. 从本地复制目录到远程主机

复制本地目录及其内容到远程主机,可以使用 -r 选项(递归复制目录)。

scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination

例如,将本地的 /home/user/mydir 目录复制到远程主机 /root/ 目录:

scp -r /home/user/mydir root@192.168.100.20:/root/
4. 从远程主机复制目录到本地

同样地,使用 -r 选项可以将远程主机上的目录复制到本地。

scp -r username@remote_host:/path/to/remote/directory /path/to/local/destination

例如,将远程主机 /root/mydir 目录复制到本地 /home/user/ 目录:

scp -r root@192.168.100.20:/root/mydir /home/user/
5. 指定 SSH 端口

如果远程主机使用非默认的 SSH 端口(默认是 22),可以使用 -P 选项指定端口号。

scp -P port /path/to/local/file username@remote_host:/path/to/remote/destination

例如,远程主机使用 2222 端口:

scp -P 2222 /etc/abc.sh root@192.168.100.20:/root/
6. 限制传输带宽

scp 命令允许你通过 -l 选项来限制传输的带宽(以 Kbit/s 为单位)。这在带宽有限时很有用。

scp -l bandwidth_limit /path/to/local/file username@remote_host:/path/to/remote/destination

例如,限制带宽为 500 Kbit/s:

scp -l 500 /etc/abc.sh root@192.168.100.20:/root/
7. 显示传输进度

使用 -v 选项可以启用详细输出,显示传输进度和调试信息。传输过程中会显示每个文件的传输速度和剩余时间。

scp -v /path/to/local/file username@remote_host:/path/to/remote/destination

例如:

scp -v /etc/abc.sh root@192.168.100.20:/root/
8. 使用私钥进行身份验证

如果远程主机要求使用 SSH 密钥进行身份验证,可以通过 -i 选项指定私钥文件。

scp -i /path/to/private_key /path/to/local/file username@remote_host:/path/to/remote/destination

例如,使用 /home/user/.ssh/id_rsa 密钥文件:

scp -i /home/user/.ssh/id_rsa /etc/abc.sh root@192.168.100.20:/root/

三. 常见选项

  • -r:递归复制整个目录。
  • -P:指定 SSH 端口号(注意是大写 -P)。
  • -i:指定 SSH 私钥文件。
  • -v:启用详细模式,显示调试信息。
  • -l:限制带宽,单位为 Kbit/s。
  • -C:启用压缩,适用于大文件传输,减少带宽占用。

四. 示例汇总

  • 本地文件到远程主机

    scp /etc/abc.sh root@192.168.100.20:/root/
  • 远程文件到本地

    scp root@192.168.100.20:/root/abc.sh /home/user/
  • 本地目录到远程主机

    scp -r /home/user/mydir root@192.168.100.20:/root/
  • 远程目录到本地

    scp -r root@192.168.100.20:/root/mydir /home/user/
  • 指定非默认端口

    scp -P 2222 /etc/abc.sh root@192.168.100.20:/root/
  • 使用私钥进行身份验证

    scp -i /home/user/.ssh/id_rsa /etc/abc.sh root@192.168.100.20:/root/
  • 限制带宽

    scp -l 500 /etc/abc.sh root@192.168.100.20:/root/
  • 启用详细输出

    scp -v /etc/abc.sh root@192.168.100.20:/root/

五. 注意事项

  • scp 使用的是 SSH 协议,确保远程主机已经启用了 SSH 服务。
  • 如果目标目录在远程主机上不存在,scp 命令会自动创建目录。
  • 默认情况下,scp 会要求你输入远程主机的密码(除非使用密钥认证)。

http://www.kler.cn/a/398607.html

相关文章:

  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具视频汇聚技术在智慧安防监控中的应用与优势
  • Solana 区块链的技术解析及未来展望 #dapp开发#公链搭建
  • Gin 框架中间件详细介绍
  • Spring纯注解开发
  • 21.3D surface
  • Flowable 构建后端服务(后端以及数据库搭建) Flowable Modeler 设计器搭建(前端)
  • 树状数组+概率论,ABC380G - Another Shuffle Window
  • ZooKeeper单机、集群模式搭建教程
  • 力扣 LeetCode 145. 二叉树的后序遍历(Day6:二叉树)
  • 读书笔记《Lean In 向前一步》
  • SpringBoot接收前端传递参数
  • C++设计思想-001-设计模式-单例模式
  • Controller Baseband commands速览
  • Mac上详细配置java开发环境和软件(更新中)
  • 跨平台WPF框架Avalonia教程 十四
  • python编写一个自动清理三个月以前的邮件脚本
  • 攻防世界-mfw
  • antd table表格设置最小宽度,列宽等比例显示
  • 26-ES集群搭建、身份认证配置
  • 【leetcode】704. 二分查找
  • 力扣 多数元素-169
  • 基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型
  • css三角制作(二十课)
  • 【html网页页面002】html+css制作实现家乡江苏网页主题制作(5页面附效果图)
  • 2024-11-17 -MATLAB三维绘图简单实例
  • 发布 npm 包推送到官方库时 提示 connect ETIMEDOUT