使用 bash 脚本把 AWS EC2 数据备份到 S3
admin
2023-04-04 13:22:02
0

一、IAM 秘钥授权方式(普通)

Amazon Simple Storage Service (Amazon S3) 是一种面向 Internet 的存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。您可以使用 AWS 管理控制台简单而直观的 web 界面来完成这些任务。

1.1、打开 IAM

单击 AWS Identity and Access Management 控制面板左侧的用户。

使用 bash 脚本把 AWS EC2 数据备份到 S3

单击添加用户按钮。
使用 bash 脚本把 AWS EC2 数据备份到 S3

1.2、添加用户

在用户名: 旁的文本框中输入用户名 (在本示例中,我们将使用 aws_backup),然后从“选择 AWS 访问类型”部分中选择编程访问。单击下一步: 权限按钮。

使用 bash 脚本把 AWS EC2 数据备份到 S3

单击直接附加现有策略选项。选择 AdministratorAccess,然后单击下一步: 审核。

使用 bash 脚本把 AWS EC2 数据备份到 S3

单击创建用户。

使用 bash 脚本把 AWS EC2 数据备份到 S3

单击下载凭证按钮并将 credentials.csv 文件保存到安全位置 (您稍后在步骤 3 中将需要此文件),然后单击关闭按钮。

使用 bash 脚本把 AWS EC2 数据备份到 S3

1.3、安装和配置 AWS CLI

您已经拥有 IAM 用户,现在需要安装 AWS 命令行界面 (CLI)。
有关安装文档请查看 https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html 。

我这里直接使用自带的源安装。

apt  install awscli

1.4、配置授权

登陆到我们的 Ubuntu 系统,输入 aws configure,然后按 Enter 键。在系统提示时输入以下信息:

root@ip-172-31-47-132:~# aws configure
AWS Access Key ID [None]: AKIA5NAGHF6NVEPKATFQ
AWS Secret Access Key [None]: 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
Default region name [None]: ap-northeast-1
Default output format [None]: json
root@ip-172-31-47-132:~# 

二、IAM 角色授权方式(安全)

上面一种方式相对来说已经够安全了,但是秘钥信息都以明文的方式存储在了服务器上面,也变成了一种不安全,那我们就配置一下更加安全的角色方式,角色是赋予信任的实体授予权限的安全方法。

2.1、创建一个 EC2 访问 S3 的角色

选择受信任的实体,我们这里选择 EC2。

使用 bash 脚本把 AWS EC2 数据备份到 S3

赋予访问 S3 权限。

使用 bash 脚本把 AWS EC2 数据备份到 S3

创建角色。

使用 bash 脚本把 AWS EC2 数据备份到 S3

2.2、为 EC2 添加 访问 S3 的角色

找到 EC2 实例界面。

使用 bash 脚本把 AWS EC2 数据备份到 S3

选择我们刚刚创建的角色。

使用 bash 脚本把 AWS EC2 数据备份到 S3

2.3、测试

这里的前提条件是没有配置秘钥授权的方式。

aws s3 ls s3://myweb-backup-eu-west-1/

三、使用 AWS CLI 和 S3 备份数据

3.1、创建存储桶

要新建一个名为myweb-backup的存储桶,请输入:

root@ip-172-31-47-132:~# aws s3 mb s3://myweb-backup
make_bucket: myweb-backup

3.2、上传文件

要将/etc/passwd文件上传到 S3 存储桶 myweb-backup,您需要使用以下命令:

root@ip-172-31-47-132:~# aws s3 cp /etc/passwd s3://myweb-backup/
upload: ../../etc/passwd to s3://myweb-backup/passwd  

使用 bash 脚本把 AWS EC2 数据备份到 S3

3.3、下载文件

要从 S3 中将 passwd 下载至本地目录,我们需要颠倒命令的次序,如下所示:

root@ip-172-31-47-132:~# aws s3 cp s3://myweb-backup/passwd .
download: s3://myweb-backup/passwd to ./passwd   

3.4、删除文件

要将 passwd 从您的 myweb-backup 存储桶中删除,请使用以下命令:

root@ip-172-31-47-132:~# aws s3 rm s3://myweb-backup/passwd 
delete: s3://myweb-backup/passwd

四、实际案例(使用秘钥这种方法)

比如我每天把 /etc 目前下面的所有内容打包上传备份。

#!/bin/bash
export HOME="/home/ubuntu"

cd /tmp/;
tar -zcPf etc$(date +%Y%m%d).tar.gz /etc;
aws s3 cp etc$(date +%Y%m%d).tar.gz s3://myweb-backup/;
rm -f etc$(date +%Y%m%d).tar.gz;

然后添加一个定时任务即可。

我这里遇到一个问题,就是放在定时任务之后一直无法上传成功,不清楚使用角色授权的方式会不会出现这种情况,我觉得应该不会,大家可以自己去试试,通过打印日志查看,发现unable to locate credentials这个问题,找了半天,加了一个环境变量export HOME="/home/ubuntu"解决了,真是费尽周折,如果再遇到手动执行脚本正常,而定时任务不正常,我们可以用下面的办法对比一下两种方式的环境变量的区别。

# 定时任务环境变量输出
set | sort > /tmp/env.cron
# 手动执行脚本输出
set | sort > /tmp/env.interactive
# 然后进行比较
diff /tmp/env.cron /tmp/env.interactive

为了节省空间,我们可以添加生命周期规则。

使用 bash 脚本把 AWS EC2 数据备份到 S3

参考文档: https://aws.amazon.com/cn/getting-started/tutorials/backup-to-s3-cli/

欢迎大家扫码关注,获取更多信息

使用 bash 脚本把 AWS EC2 数据备份到 S3

相关内容

热门资讯

玩家最新攻略“天天福建麻将辅助... 玩家最新攻略“天天福建麻将辅助器?”(太坑了果然有挂)您好,天天福建麻将这个游戏其实有挂的,确实是有...
今日重大发现“天天福建麻将有挂... 今日重大发现“天天福建麻将有挂吗?”(原来真的有挂)您好,天天福建麻将这个游戏其实有挂的,确实是有挂...
终于懂了“广西老友玩究竟有挂吗... 终于懂了“广西老友玩究竟有挂吗?”(果然有透视挂)您好,广西老友玩这个游戏其实有挂的,确实是有挂的,...
重磅消息“大富豪app到底有挂... 有 亲,根据资深记者爆料大富豪app是可以开挂的,确实有挂(咨询软件无需...
我来教教您“边锋二七十开挂器?... 网上科普关于“边锋二七十有没有挂”话题很是火热,小编也是针对边锋二七十作*弊开挂的方法以及开挂对应的...
玩家攻略科普“天天微友棋牌到底... 您好:天天微友棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款...
终于明白“家家乐牌吧开挂神器?... 家人们!今天小编来为大家解答家家乐牌吧透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买...
玩家攻略科普“九酷牛牛到底有挂... 玩家攻略科普“九酷牛牛到底有挂吗?”(太坑了原来有挂)您好,九酷牛牛这个游戏其实有挂的,确实是有挂的...
今日重大发现“微信红包到底有挂... 您好:微信红包这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
最新引进“秀山博胡可以开挂吗?... 家人们!今天小编来为大家解答秀山博胡透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...