Linux常用命令——scp详解

一、scp 概述

scp(Secure Copy)是基于 SSH 协议的安全文件传输工具,支持在本地与远程主机之间加密复制文件和目录。
特点

  • 加密传输,保障数据安全。
  • 支持文件权限、时间戳等元数据的保留。
  • 可通过 SSH 密钥或密码认证。

二、常用命令选项
选项说明
-r递归复制目录(必须用于目录)
-v显示详细输出(调试用)
-q安静模式(不显示进度/错误)
-c指定 SSH 客户端程序(如 ssh -p 22
-P指定 SSH 端口(默认 22)
-i指定私钥文件(替代密码登录)
-o覆盖 SSH 选项(如 -o StrictHostKeyChecking=no
-h以人类可读格式显示文件大小(如 1K
-l限制上传/下载带宽(如 -l 100k
--progress显示传输进度条

三、使用实例
1. 本地文件 → 远程主机
scp  /local/path/file.txt   user@remote_ip:/remote/path/
  • 说明:将本地 file.txt 复制到远程主机的 /remote/path/ 下。
2. 远程文件 → 本地
scp  user@remote_ip:/remote/path/file.txt   /local/path/
  • 说明:反向操作,将远程文件拉取到本地。
3. 本地目录 → 远程主机(递归)​
scp -r  /local/path/directory  user@remote_ip:/remote/path/
  • 说明-r 必须用于目录,否则会报错。
4. 指定 SSH 端口

若远程主机 SSH 端口非默认 22:

scp  -P  2222  /local/file.txt   user@remote_ip:/remote/path/
5. 使用密钥认证(免密码)​

提前将公钥 ~/.ssh/id_rsa.pub 上传到远程 ~/.ssh/authorized_keys

scp  -i  ~/.ssh/private_key.pem  /local/file.txt user@remote_ip:/remote/path/
6. 保留文件权限

默认保留权限,若需强制设置:

scp  -o  PreservePermissions=true  /local/file.txt user@remote_ip:/remote/path/
7. 排除特定文件

使用 --exclude 过滤文件:

scp  -r  --exclude="temp.log"  /local/path/  user@remote_ip:/remote/path/
8. 限制带宽速度

限制上传速度为 100KB/s:

scp  -l  100k  /local/file.txt  user@remote_ip:/remote/path/
9. 显示传输进度
scp --progress /local/file.txt user@remote_ip:/remote/path/

四、注意事项
  1. 权限问题

    • 确保远程目录存在且用户有写入权限。
    • 若需sudo权限,可使用 sudo scp,但需谨慎操作。
  2. 防火墙设置

    • 确认远程 SSH 端口(默认 22)已放行。
  3. 大文件传输优化

    • 启用压缩:-C(自动协商压缩算法)。
    • 分块传输:split + scp 分段传输(适合超大数据)。
  4. 断点续传
    scp 不原生支持断点续传,但可借助 rsync 或第三方工具(如 lftp)。


五、高级用法
1. 通过中间主机中转
scp -o ProxyCommand="ssh -W %h:%p user@middle_host" /local/file.txt user@remote_ip:/remote/path/
2. 并行复制多个文件

结合 xargs 或 parallel 工具实现多线程加速。


六、总结
  • 适用场景:一次性安全文件传输、脚本自动化备份。
  • 局限性:不适合频繁小文件传输或增量同步(推荐 rsync)。
  • 安全建议:优先使用 SSH 密钥认证,避免密码明文传输。

通过以上示例和选项,可灵活应对大多数文件传输需求。如需进一步优化,可结合 ssh-copy-id 快速部署密钥,或使用 scp2 等增强版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值