使用 bash 脚本把 AWS EC2 数据备份到 S3
目錄
- 一、IAM 秘鑰授權方式(普通)- 1.1、打開 IAM
- 1.2、添加用戶
- 1.3、安裝和配置 AWS CLI
- 1.4、配置授權
 
- 二、IAM 角色授權方式(安全)- 2.1、創(chuàng)建一個 EC2 訪問 S3 的角色
- 2.2、為 EC2 添加 訪問 S3 的角色
- 2.3、測試
 
- 三、使用 AWS CLI 和 S3 備份數據- 3.1、創(chuàng)建存儲桶
- 3.2、上傳文件
- 3.3、下載文件
- 3.4、刪除文件
 
- 四、實際案例(使用秘鑰這種方法)
一、IAM 秘鑰授權方式(普通)
Amazon Simple Storage Service (Amazon S3) 是一種面向 Internet 的存儲服務。您可以通過 Amazon S3 隨時在 Web 上的任何位置存儲和檢索的任意大小的數據。您可以使用 AWS 管理控制臺簡單而直觀的 web 界面來完成這些任務。
1.1、打開 IAM
單擊 AWS Identity and Access Management 控制面板左側的用戶。
單擊添加用戶按鈕。
1.2、添加用戶
在用戶名: 旁的文本框中輸入用戶名 (在本示例中,我們將使用 aws_backup),然后從“選擇 AWS 訪問類型”部分中選擇編程訪問。單擊下一步: 權限按鈕。
單擊直接附加現有策略選項。選擇 AdministratorAccess,然后單擊下一步: 審核。
單擊創(chuàng)建用戶。
單擊下載憑證按鈕并將 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 awscli1.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、創(chuàng)建一個 EC2 訪問 S3 的角色
選擇受信任的實體,我們這里選擇 EC2。
賦予訪問 S3 權限。
創(chuàng)建角色。
2.2、為 EC2 添加 訪問 S3 的角色
找到 EC2 實例界面。
選擇我們剛剛創(chuàng)建的角色。
2.3、測試
這里的前提條件是沒有配置秘鑰授權的方式。
aws s3 ls s3://myweb-backup-eu-west-1/三、使用 AWS CLI 和 S3 備份數據
3.1、創(chuàng)建存儲桶
要新建一個名為myweb-backup的存儲桶,請輸入:
root@ip-172-31-47-132:~# aws s3 mb s3://myweb-backup make_bucket: myweb-backup3.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/passwd3.3、下載文件
要從 S3 中將 passwd 下載至本地目錄,我們需要顛倒命令的次序,如下所示:
root@ip-172-31-47-132:~# aws s3 cp s3://myweb-backup/passwd . download: s3://myweb-backup/passwd to ./passwd3.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;然后添加一個定時任務即可。
我這里遇到一個問題,就是放在定時任務之后一直無法上傳成功,不清楚使用角色授權的方式會不會出現這種情況,我覺得應該不會,大家可以自己去試試,通過打印日志查看,發(fā)現unable to locate credentials這個問題,找了半天,加了一個環(huán)境變量export HOME="/home/ubuntu"解決了,真是費盡周折,如果再遇到手動執(zhí)行腳本正常,而定時任務不正常,我們可以用下面的辦法對比一下兩種方式的環(huán)境變量的區(qū)別。
# 定時任務環(huán)境變量輸出 set | sort > /tmp/env.cron # 手動執(zhí)行腳本輸出 set | sort > /tmp/env.interactive # 然后進行比較 diff /tmp/env.cron /tmp/env.interactive為了節(jié)省空間,我們可以添加生命周期規(guī)則。
參考文檔: https://aws.amazon.com/cn/getting-started/tutorials/backup-to-s3-cli/
轉載于:https://www.cnblogs.com/wzlinux/p/11188436.html
總結
以上是生活随笔為你收集整理的使用 bash 脚本把 AWS EC2 数据备份到 S3的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: sort(()={return Math
- 下一篇: 颜色相关的算法整理
