如何通过可控机器C用SCP与AWS CLI实现Ceph/S3至远程Linux的数据传输
解决方案
直接用ssh替代scp来接收标准输入并写入远程文件即可,因为scp默认要求本地源是常规文件,管道/文件描述符不符合它的输入要求。可行命令如下:
aws s3 cp s3://s3uri/filename.txt - | ssh user@A "cat > /path/to/file"
原理说明
aws s3 cp s3://s3uri/filename.txt -将S3对象内容输出到标准输出(stdout)- 通过管道
|将标准输出传递给ssh,远程机器A上执行cat > /path/to/file,把接收内容写入目标文件
可选优化
- 传输大文件时,启用SSH压缩提升效率:
aws s3 cp s3://s3uri/filename.txt - | ssh -C user@A "cat > /path/to/file"
- 验证传输完整性,可对比哈希值:
# 在机器C上获取S3对象的ETag哈希 aws s3api head-object --bucket your-bucket-name --key filename.txt --query 'ETag' --output text # 传输完成后在机器A上计算文件哈希 ssh user@A "md5sum /path/to/file"
内容的提问来源于stack exchange,提问作者theirman
相关产品推荐
相关产品推荐

