1、在某台ubuntu服务器上安装aws cli命令行
参考aws文件https://docs.aws.amazon.com/cli/latest/userguide/install-bundle.html
2、配置aws cli客户端
参考aws文件https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
上面的信息“我的安全凭证”->"用户"功能中可以找到,如果没有就创建一个用户
可以通过如下命令进行测试:
aws s3 ls s3://bucket-name/
3、配置目标存储桶的访问策略
可视化界面https://awspolicygen.s3.amazonaws.com/policygen.html
注意点:
Principal是源账户的用户
Resource是目标存储桶的名字,特别注意一定要加一个带通配符的Resource,否则会报无法访问的错误。
4、执行同步命令
// 这里要注意一定要加上权限,否则到新的bucket下就没权限访问了,这个用户id可以在bucket的权限页可以找到
aws s3 sync s3://source-bucket s3://destination-bucket --grants full=id=xxxxxxxxxxxx
// 增加多个权限
aws s3 sync s3://sport-health s3://walk-fit --grants full=id=xxxxxxxxxxxx11111,id=xxxxxxxxxxxx2222
// 不同区域可能会用到下面这个命令
aws s3 sync s3://source-bucket s3://destination-bucket --grants full=id=xxxxxxxxxxxx --source-region us-west-1 --region us-west-1
即可实现同步
aws在这里有个比较强大的地方,多次执行上面的命令,只会同步两次名字之间的差异文件部分,并不会每次都全部重新同步。