scp:上传文件到ec2实例报错解决

在执行上传文件命令时:

scp -i ~/Documents/cert/qa.pem /Users/testmanzhang/Documents/test/2025_script/analyze_viewer_logs.sh ec2-user@55.86.xxx.33:/home/ec2-user/kvs-webrtc-sdk

报错:

scp: dest open "/home/ec2-user/analyze_viewer_logs.sh": Failure
scp: failed to upload file /Users/testmanzhang/Documents/test/2025_script/analyze_viewer_logs.sh to /home/ec2-user/
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2752, received 2416 bytes, in 0.6 seconds
Bytes per second: sent 4824.0, received 4235.1
debug1: Exit status 0

因为我上周还上传成功,这周就失败了,很奇怪,难道真的是环境问题千奇百怪吗?还是其他人“动了手脚”?
没办法,一步一步排除吧!
从报错的内容看,核心问题是:目标路径 /home/ec2-user/ 无法写入

一、查看目标文件夹权限

ls -ld /home/ec2-user

得到结果为:

drwx------. 7 ec2-user ec2-user 16384 Jun 13 09:53 /home/ec2-user/

drwx------.:权限字段

  • d:表示这是一个目录(directory)
  • rwx------:表示权限是:
    (1)所有者(user)ec2-user:有读(r)、写(w)、执行(x)权限
    (2)所属组(group)ec2-user:无权限(—)
    (3)其他用户(others):无权限(—)
    (4).:SELinux 安全上下文标志(说明此系统启用了 SELinux)

7:硬链接数

  • 表示这个目录有 7 个链接数(包括自身 .、子目录的 … 等)

ec2-user ec2-user:所有者和所属组

  • 第一个 ec2-user:该目录的所有者(user)
  • 第二个 ec2-user:该目录的所属组(group)

16384:目录大小(字节)

  • 这是文件系统分配给这个目录的空间,单位是字节。
  • 对于目录来说,这不是里面文件的总大小,而是元数据大小。

Jun 13 09:53:最后修改时间

  • 表示最后一次更改目录本身属性或结构(比如添加/删除文件)是在 6 月 13 日 09:53

结论:目录权限没有问题

二、上传其他文件

我上传了一个服务器上已经存在的文件multi_viewer.sh,奇怪,居然上传成功了:

testmanzhang@TestMandeMBP Downloads % scp -i ~/Documents/cert/qa.pem /Users/testmanzhang/Documents/test/2025_script/multi_viewer.sh ec2-user@55.86.xxx.33:/home/ec2-user/kvs-webrtc-sdk 
multi_viewer.sh                               100% 3524    52.4KB/s   00:00    
  1. 检查 analyze_viewer_logs.sh 的文件名是否真的就是这么写的,看看有没有隐藏的特殊字符,比如中文空格、不可见字符(\r等)——这种字符看不见,但会导致远程文件名无法处理。
testmanzhang@TestMandeMBP 2025_script % ls -b /Users/testmanzhang/Documents/test/2025_script/analyzeviewerlogs.sh
/Users/testmanzhang/Documents/test/2025_script/analyzeviewerlogs.sh

结果是文件名完全干净,ls -b 没有显示任何特殊字符或转义符号(比如 \r、\n、空格、中文符号等),所以不是文件名导致的问题。

  1. 难道是我在ec2实例上没有提前创建analyze_viewer_logs.sh这个文件吗?于是我在实例上尝试创建这个文件analyze_viewer_logs.sh
touch analyze_viewer_logs.sh

创建失败,在失败提示中我看到了,关于磁盘的提示,于是我查看了磁盘信息:

df -h

我知道原因了,磁盘满了。。。

[ec2-user@ip-10-xx-0-xxx kvs-webrtc-sdk]$ df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          4.0M     0  4.0M   0% /dev
tmpfs             1.9G     0  1.9G   0% /dev/shm
tmpfs             758M   70M  688M  10% /run
/dev/nvme0n1p1     50G   50G   20K 100% /
tmpfs             1.9G     0  1.9G   0% /tmp
/dev/nvme0n1p128   10M  1.3M  8.7M  13% /boot/efi
tmpfs             379M  4.0K  379M   1% /run/user/1000

真相终于浮出水面了,

/dev/nvme0n1p1     50G   50G   20K 100% /

根目录磁盘已满(100%),这正是 scp 上传失败,scp: dest open “…” Failure 的根本原因。

查了一下文件列表,10个日志文件,每个4G多:
在这里插入图片描述
最后删除了一个文件,再次上传,OK了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值