使用 bash 腳本把 AWS EC2 數據備份到 S3

一、創建一個 AWS 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

二、安裝和配置 AWS CLI

您已經擁有 IAM 用戶,現在需要安裝 AWS 命令行界面 (CLI)。
有關安裝文檔請查看 https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html

2.1、配置授權

登陸到我們的 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:~# 

三、使用 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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章