Linux常用命令——scp详解
通过以上示例和选项,可灵活应对大多数文件传输需求。如需进一步优化,可结合。(Secure Copy)是基于 SSH 协议的安全文件传输工具,支持在。不原生支持断点续传,但可借助。之间加密复制文件和目录。快速部署密钥,或使用。工具实现多线程加速。
·
一、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/
四、注意事项
-
权限问题
- 确保远程目录存在且用户有写入权限。
- 若需sudo权限,可使用
sudo scp,但需谨慎操作。
-
防火墙设置
- 确认远程 SSH 端口(默认 22)已放行。
-
大文件传输优化
- 启用压缩:
-C(自动协商压缩算法)。 - 分块传输:
split+scp分段传输(适合超大数据)。
- 启用压缩:
-
断点续传
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)