SCP(Secure Copy)
原理:基于SSH加密的跨主机文件拷贝,适合中小文件传输。
基础命令格式:
scp [选项] 源文件 目标路径
常用场景与示例
-
本地 → 远程
scp /local/file.txt user@remote_ip:/remote/directory/
输入远程主机的用户密码后开始传输。
-
远程 → 本地
scp user@remote_ip:/remote/file.txt /local/directory/
-
递归复制目录(加
-r
参数)scp -r /local/folder user@remote_ip:/remote/path/
-
指定SSH端口(若远程SSH端口非默认22)
scp -P 2222 file.txt user@remote_ip:/path/
注意事项:
- SCP传输大文件时可能中断且无法续传。
- 使用
-C
参数启用压缩(如scp -C file.txt user@remote_ip:/path/
)可提升慢速网络下的效率。
Rsync(增量同步工具)
优势:仅传输差异部分,支持断点续传,适合大文件或定期备份。
基础命令格式:
rsync [选项] 源路径 目标路径
核心操作示例
-
同步本地目录到远程
rsync -avz /local/dir/ user@remote_ip:/remote/dir/
-a
:归档模式(保留权限、时间戳等)-v
:显示详细过程-z
:压缩传输
-
远程同步到本地
rsync -avz user@remote_ip:/remote/dir/ /local/dir/
-
排除特定文件
rsync -avz --exclude='*.tmp' /local/dir/ user@remote_ip:/remote/dir/
-
增量备份(硬链接节省空间)
rsync -a --link-dest=/previous/backup /source/ /new/backup/
关键技巧:
- 添加
--progress
显示实时进度(如rsync -avz --progress ...
)。 - 用
-e
指定SSH端口:rsync -avz -e 'ssh -p 2222' ...
。
SFTP(交互式安全传输)
适用场景:需交互式浏览远程目录时使用,适合不熟悉命令路径的用户。
操作流程:
- 连接远程主机:
sftp -P 2222 user@remote_ip
- 常用SFTP命令:
put local_file
→ 上传文件get remote_file
→ 下载文件mkdir dir_name
→ 创建目录ls
→ 列出远程文件exit
→ 退出会话
方法对比与选型建议
工具 | 最佳场景 | 劣势 |
---|---|---|
SCP | 单次小文件快速传输 | 大文件易中断 |
Rsync | 大文件/定期备份/增量同步 | 命令选项较复杂 |
SFTP | 交互式目录浏览与文件管理 | 传输效率低于SCP |
安全与效率优化
- 免密登录(提升效率):
生成SSH密钥对:ssh-keygen
,拷贝公钥到远程主机:ssh-copy-id user@remote_ip
,后续操作无需输密码。 - 网络加速:
- Rsync启用压缩(
-z
参数)。 - 使用
mosh
替代SSH(网络波动时更稳定)。
- Rsync启用压缩(
- 传输加密:
所有工具均基于SSH,默认端口22需防火墙保护,高风险环境改用非标准端口。
常见问题解决
- 权限错误:
目标目录无写入权限时,远程执行sudo mkdir -p /path/ && sudo chown user:user /path/
。 - 连接超时:
检查防火墙设置(sudo ufw allow 22/tcp
)或确认远程SSH服务状态(systemctl status sshd
)。 - 中文乱码:
在SCP/Rsync命令前加LC_ALL=C
(如LC_ALL=C scp ...
)禁用本地化编码。
- 日常小文件传输 → SCP
(命令简洁,适合临时操作) - 大文件或定期备份 → Rsync
(增量同步节省带宽,数据一致性高) - 交互式文件管理 → SFTP
(图形化工具如FileZilla底层即SFTP协议)
掌握这三类工具可覆盖99%的远程拷贝需求,结合免密登录和压缩参数,可显著提升运维效率。
引用说明:
- OpenSSH官方文档(man手册:
man scp
,man rsync
,man sftp
)- Rsync算法原理:Andrew Tridgell, Efficient Algorithms for Sorting and Synchronization, 1999
- SSH安全实践:Mozilla Infosec指南(https://infosec.mozilla.org/)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4719.html