如何通过SSH将Linux服务器本地文件上传至Amazon S3存储桶
把Linux服务器文件上传到AWS S3的正确方法
你用scp命令是错的——scp是用来和EC2这类远程服务器做文件传输的工具,AWS S3是对象存储服务,不能用scp直接连接。下面是两种靠谱的上传方法:
方法一:使用AWS CLI(官方工具)
安装AWS CLI
根据你的Linux发行版执行对应命令:- Ubuntu/Debian:
sudo apt update && sudo apt install awscli - CentOS/RHEL:
sudo yum install awscli - 通用pip安装:
pip install awscli --user
- Ubuntu/Debian:
配置AWS CLI
运行配置命令,按提示输入你的AWS密钥和区域:aws configure需要输入的信息包括:
- AWS Access Key ID:拥有S3上传权限的IAM用户密钥ID
- AWS Secret Access Key:对应密钥的Secret
- Default region name:比如
us-east-1(根据你的存储桶区域填写) - Default output format:可选,比如
json
上传文件
- 上传单个文件到存储桶根目录:
aws s3 cp MY_FILE_TO_BE_UPLOADED.txt s3://你的存储桶名称/ - 上传整个目录(递归上传):
aws s3 cp ./要上传的目录 s3://你的存储桶名称/目标目录名/ --recursive
- 上传单个文件到存储桶根目录:
方法二:使用s3cmd(第三方工具)
安装s3cmd
- Ubuntu/Debian:
sudo apt install s3cmd - CentOS/RHEL:
sudo yum install s3cmd
- Ubuntu/Debian:
配置s3cmd
运行配置向导完成设置:s3cmd --configure同样需要输入AWS Access Key、Secret Key,以及存储桶区域等信息,完成后可以用
s3cmd ls验证是否能访问存储桶。上传文件
- 单个文件上传:
s3cmd put MY_FILE_TO_BE_UPLOADED.txt s3://你的存储桶名称/ - 目录递归上传:
s3cmd put -r ./要上传的目录 s3://你的存储桶名称/目标目录名/
- 单个文件上传:
额外说明
你手里的.pem证书是用来SSH连接EC2实例的,上传S3不需要用到它。如果你的Linux服务器本身是AWS EC2实例,还可以给实例附加带S3上传权限的IAM角色,这样不需要配置Access Key,直接就能执行上述上传命令。
内容的提问来源于stack exchange,提问作者kdjoni
相关产品推荐
相关产品推荐

