Linux命令-scp通过 SSH 远程复制文件快速参考基本语法安装 scp常用选项本地到远程远程到本地远程到远程配置 SSH 简化 scp 使用与 rsync 对比故障排查总结快速参考scpSecure Copy是通过 SSH 协议在本地和远程主机之间安全复制文件的命令。它加密传输所有数据包括密码和文件内容是替代不安全的rcp的标准工具。scp基于 SSH 协议支持密钥认证、端口指定、限速等功能。核心优势安全加密、基于 SSH、使用简单。对于大文件或需要断点续传的场景建议使用rsync。基本语法# 基本语法scp[选项]源 目标# 本地 → 远程scplocal_file userremote:/path/# 远程 → 本地scpuserremote:/path/file ./# 远程 → 远程scpuser1host1:/path/file user2host2:/path/# 复制目录scp-rlocal_dir/ userremote:/path/安装 scp# scp 是 OpenSSH 的一部分通常已预装sudoaptinstallopenssh-client# Debian/Ubuntusudoyuminstallopenssh-clients# RHEL/CentOS# 验证安装whichscpscp-h常用选项# -r 递归复制目录scp-rdirectory/ userremote:/path/# -P 端口 指定远程 SSH 端口注意是大写 Pscp-P2222file.txt userremote:/path/# -i 密钥 指定 SSH 私钥文件scp-i~/.ssh/id_rsa file.txt userremote:/path/# -l 限速 限制带宽单位 Kbit/sscp-l8000file.txt userremote:/path/# 约 1MB/s# -C 启用压缩适合慢速网络scp-Clarge_file.tar.gz userremote:/path/# -p 保留文件原始属性权限、时间戳等scp-pfile.txt userremote:/path/# -q 安静模式不显示进度条scp-qfile.txt userremote:/path/# -v 调试模式显示详细连接过程scp-vfile.txt userremote:/path/# -B 批处理模式不询问密码scp-Bfile.txt userremote:/path/# -o 选项 传递 SSH 选项scp-oStrictHostKeyCheckingnofile.txt userremote:/path/本地到远程# 复制单个文件scpfile.txt user192.168.1.100:/home/user/# 复制并指定端口scp-P2222file.txt user192.168.1.100:/home/user/# 复制目录scp-rproject/ user192.168.1.100:/home/user/# 使用密钥认证scp-i~/.ssh/id_rsa file.txt user192.168.1.100:/home/user/# 复制多个文件scpfile1.txt file2.txt file3.txt user192.168.1.100:/home/user/# 使用通配符scp*.log user192.168.1.100:/var/log/# 保留文件属性scp-pfile.txt user192.168.1.100:/home/user/# 限速传输scp-l4000large_file.iso user192.168.1.100:/home/user/远程到本地# 复制单个文件scpuser192.168.1.100:/home/user/file.txt ./# 复制目录scp-ruser192.168.1.100:/home/user/project/ ./# 指定端口和密钥scp-P2222-i~/.ssh/id_rsa user192.168.1.100:/home/user/file.txt ./# 复制并重命名scpuser192.168.1.100:/home/user/file.txt ./new_name.txt# 从远程复制多个文件需要引号scpuser192.168.1.100:/home/user/{file1.txt,file2.txt}./远程到远程# 在两台远程主机之间复制scpuser1host1:/path/file user2host2:/path/# ⚠️ 注意数据会经过本地中转# 如果要直接在两台主机间传输不经过本地使用 -3 选项scp-3user1host1:/path/file user2host2:/path/配置 SSH 简化 scp 使用# 编辑 ~/.ssh/configcat~/.ssh/configEOF Host server1 HostName 192.168.1.100 User myuser Port 2222 IdentityFile ~/.ssh/id_ed25519 EOFchmod600~/.ssh/config# 现在可以简化命令scpfile.txt server1:/home/user/scp-rproject/ server1:/home/user/与 rsync 对比# scp简单直接 # 优点简单、安全、不需要额外配置# 缺点不支持断点续传、不支持增量传输、大文件传输慢scplarge_file.iso userremote:/path/# rsync功能强大 # 优点增量传输、断点续传、压缩、限速、删除同步# 缺点命令稍复杂rsync-avzPlarge_file.iso userremote:/path/# 选择建议 # 简单场景少量文件、小文件用 scp# 复杂场景大量文件、大文件、需要断点续传用 rsync# 备份场景用 rsync# 临时复制用 scp故障排查# 问题1scp 报错 Permission denied# 解决检查远程目录权限sshuserremotels -la /path/# 问题2scp 报错 No route to host# 解决检查网络连通性pingremote_hostnc-zvremote_host22# 问题3大文件传输中断# 解决使用 rsync 的断点续传rsync-avzP--partiallarge_file.iso userremote:/path/# 问题4scp 很慢# 解决启用压缩或限速scp-Cfile.txt userremote:/path/总结核心价值scp是最常用的安全远程文件复制工具简单、安全、基于 SSH。常用组合scp file userhost:/path/本地→远程scp userhost:/path/file ./远程→本地scp -r dir/ userhost:/path/递归复制目录scp -P 2222 -i key file userhost:/path/指定端口和密钥最佳实践配置~/.ssh/config简化连接大文件使用rsync -avzP替代注意-P大写指定端口不是小写-p敏感文件确保使用密钥认证