scp指令实现本地与服务器之间文件传输:常用指令及详细说明

此前,我仅使用简单的 scp 基础命令(如 scp file user@host:/path)完成文件传输,但对更高级的参数和用法了解有限。为提升效率并应对复杂场景,现系统整理 ​​SCP 的高级用法​​,包括端口指定、递归传输、限速控制、密钥认证等技巧,以便后续查阅和灵活使用。

以下是 SCP(Secure Copy Protocol) 的常用指令及详细说明,用于在本地和远程服务器之间安全复制文件:


基础语法

scp [参数] <源文件路径> <目标路径>

常用场景与指令

1. 从本地复制文件到远程服务器
scp /本地/文件路径 用户名@远程服务器IP:/远程/目标路径

示例

scp ~/data.txt user@192.168.1.100:/home/user/documents/
2. 从远程服务器复制文件到本地
scp 用户名@远程服务器IP:/远程/文件路径 /本地/目标路径

示例

scp user@example.com:/var/log/app.log ~/Downloads/
3. 复制整个目录(递归复制)
scp -r /本地/目录 用户名@远程服务器IP:/远程/目标路径

示例

scp -r ~/project/ user@10.0.0.5:/opt/
4. 指定端口号

如果远程服务器的 SSH 端口不是默认的 22,使用 -P 指定端口:

scp -P 2222 local_file.txt user@host:/path/
5. 远程服务器间直接复制

通过本地中转,将文件从 服务器A 复制到 服务器B

scp -3 user@serverA:/path/file user@serverB:/path/

高级用法

1. 限速传输

通过 -l 限制带宽(单位:Kbit/s):

scp -l 800 large_file.iso user@host:/backup/  # 限制为 100KB/s (800Kbit/s ≈ 100KB/s)
2. 启用压缩传输

对大文件使用 -C 压缩数据:

scp -C bigfile.tar.gz user@host:/data/
3. 使用密钥认证(无密码)

通过 -i 指定私钥文件:

scp -i ~/.ssh/id_rsa private_file.key user@host:/secure/
4. 排除指定文件/目录

需结合 rsync,但可通过以下变通方法实现:

rsync -av --exclude='temp/' -e ssh /local/dir/ user@host:/remote/dir/

常见问题解决

1. 权限被拒绝(Permission Denied)
  • 检查目标路径的写入权限:chmod +w /目标路径

  • 确保远程用户的 SSH 登录权限(如是否在 sshd_config 中允许)。

2. 连接超时(Connection Timeout)
  • 检查防火墙是否放行 SSH 端口(默认 22)。

  • 确认远程服务器 IP 和端口是否正确。

3. 文件名含空格或特殊字符
  • 用引号包裹路径:

    scp "file with space.txt" user@host:"/path/with space/"


注意事项

  • 安全性:SCP 基于 SSH 加密传输,但已逐渐被更现代的 rsync 或 sftp 取代(SCP 协议存在潜在漏洞)。

  • 进度显示:SCP 默认不显示进度,可使用 pv 工具或改用 rsync -P


如果需要更复杂的文件同步操作(如增量备份),建议学习 rsync 命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值