SCP 和 Rsync 都是通过 SSH 安全传输文件的工具,但各有特点和适用场景。
SCP (Secure Copy)
SCP 是基于 SSH 的简单文件传输工具,适合一次性文件传输。
基本语法
scp [选项] 源文件 目标位置
常用示例
1. 本地复制到远程:
scp local_file.txt username@remote_host:/remote/directory/
2. 远程复制到本地:
scp username@remote_host:/remote/file.txt /local/directory/
3. 复制整个目录(使用 -r 递归):
scp -r /local/directory username@remote_host:/remote/directory/
4. 指定端口(非默认22端口时):
scp -P 2222 file.txt username@remote_host:/remote/
5. 保留文件属性(修改时间、模式等):
scp -p file.txt username@remote_host:/remote/
Rsync
Rsync 是更强大的文件同步工具,支持增量传输和更多高级功能。
基本语法
rsync [选项] 源文件 目标位置
常用示例
1. 基本同步(本地到远程):
rsync -avz /local/directory/ username@remote_host:/remote/directory/
-a:归档模式(保留权限、时间等)-v:详细输出-z:压缩传输
2. 远程同步到本地:
rsync -avz username@remote_host:/remote/directory/ /local/directory/
3. 排除文件:
rsync -avz --exclude='*.tmp' /local/directory/ username@remote_host:/remote/directory/
4. 删除目标多余文件(使目标与源完全一致):
rsync -avz --delete /local/directory/ username@remote_host:/remote/directory/
5. 部分传输(只传输变化部分):
rsync -avz --partial /large_file username@remote_host:/remote/
6. 带宽限制(单位KB/s):
rsync -avz --bwlimit=1000 /local/directory/ username@remote_host:/remote/directory/
7. 使用SSH指定端口:
rsync -avz -e 'ssh -p 2222' /local/directory/ username@remote_host:/remote/directory/
对比总结
| 特性 | SCP | Rsync |
|---|---|---|
| 传输方式 | 完整文件传输 | 增量传输(仅变化部分) |
| 速度 | 较慢 | 较快(尤其小改动时) |
| 功能 | 简单文件复制 | 高级同步功能 |
| 资源占用 | 较低 | 较高(需计算文件差异) |
| 适用场景 | 一次性传输少量文件 | 定期同步或大量文件传输 |
| 断点续传 | 不支持 | 支持(–partial选项) |
安全提示
- 两种工具都通过 SSH 加密传输
- 建议使用密钥认证而非密码
- 敏感文件传输后考虑从服务器删除
- 定期检查传输日志
根据您的需求选择工具 – 简单快速传输用 SCP,复杂同步需求用 Rsync。