侧边栏壁纸
  • 累计撰写 54 篇文章
  • 累计创建 23 个标签
  • 累计收到 27 条评论

Linux常用命令——scp详解

heshaohua
2025-04-21 / 0 评论 / 0 点赞 / 12 阅读 / 874 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2025-04-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、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 等增强版本。

0

评论区