使用bash脚本把AWSEC2数据备份到S3-创新互联
一、IAM 秘钥授权方式(普通)
Amazon Simple Storage Service (Amazon S3) 是一种面向 Internet 的存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。您可以使用 AWS 管理控制台简单而直观的 web 界面来完成这些任务。
创新互联公司自2013年创立以来,先为安居等服务建站,安居等地企业,进行企业商务咨询服务。为安居企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。1.1、打开 IAM
单击 AWS Identity and Access Management 控制面板左侧的用户。
单击添加用户按钮。
1.2、添加用户
在用户名: 旁的文本框中输入用户名 (在本示例中,我们将使用 aws_backup),然后从“选择 AWS 访问类型”部分中选择编程访问。单击下一步: 权限按钮。
单击直接附加现有策略选项。选择 AdministratorAccess,然后单击下一步: 审核。
单击创建用户。
单击下载凭证按钮并将 credentials.csv 文件保存到安全位置 (您稍后在步骤 3 中将需要此文件),然后单击关闭按钮。
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。
赋予访问 S3 权限。
创建角色。
2.2、为 EC2 添加 访问 S3 的角色
找到 EC2 实例界面。
选择我们刚刚创建的角色。
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
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
为了节省空间,我们可以添加生命周期规则。
参考文档: https://aws.amazon.com/cn/getting-started/tutorials/backup-to-s3-cli/
欢迎大家扫码关注,获取更多信息
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前标题:使用bash脚本把AWSEC2数据备份到S3-创新互联
路径分享:http://ybzwz.com/article/hiies.html