跨AWS服务器恢复RDS数据库遇阻,SCP拷贝备份文件失败求解决方案
解决AWS跨服务器RDS备份恢复问题
先修正你的SCP命令错误
你用的SCP参数格式完全不对:
- SCP没有
-U参数,也不支持用-P传密码(-P是用来指定SSH端口的) - Windows路径在SSH会话里直接写
/D:/xxx没问题,但命令顺序要调整
正确的SCP拷贝方式
1. 用SSH密钥认证(推荐,安全高效)
确保本地有原服务器的SSH私钥文件,执行命令:
scp -i "C:/本地私钥路径/id_rsa" <username>@<服务器IP>:/D:/rdsdbdata/BACKUP/filename.bak "D:/"
2. 用sshpass传密码(仅测试环境用,不安全)
先装sshpass工具,再执行:
sshpass -p "你的服务器密码" scp <username>@<服务器IP>:/D:/rdsdbdata/BACKUP/filename.bak "D:/"
更适合AWS场景的高效方案
方案1:S3中转备份(比SCP拷贝本地再上传快很多)
- 原服务器上传备份到S3:
(确保服务器有S3访问权限,比如给EC2实例绑定带S3读写权限的IAM角色)aws s3 cp /D:/rdsdbdata/BACKUP/filename.bak s3://你的S3桶名/rds-backups/ - 目标服务器从S3下载:
aws s3 cp s3://你的S3桶名/rds-backups/filename.bak /D:/目标存储路径/ - 最后在目标服务器执行数据库恢复操作。
方案2:RDS原生跨实例恢复(最省心)
如果两台服务器的RDS是同一AWS账号下的实例:
- 要是原RDS开了自动备份,直接去目标区域的RDS控制台,选「恢复到新实例」,选原备份和目标实例配置就行。
- 要是手动备份,先把备份文件传到S3,再通过RDS控制台的「导入备份」功能,把S3里的备份恢复到目标RDS实例。
方案3:修复备份文件权限
如果是备份文件权限导致无法拷贝,先在原服务器改权限:
chmod 644 /D:/rdsdbdata/BACKUP/filename.bak
或者把文件所有者改成你的SSH登录用户:
chown <username>:<username> /D:/rdsdbdata/BACKUP/filename.bak
改完再用SCP拷贝。
内容的提问来源于stack exchange,提问作者sapter
相关产品推荐
相关产品推荐

