我在 EC2 实例上多次移动 Docker。每个 Docker 在主机上都有一个特定的文件夹来存储其数据。
我想创建一个备份脚本,该脚本将查找可能的文件夹列表中的任何一个,并将每个文件夹备份到 S3 上的一个文件中,该文件的名称按月份日期标记。这样您最终会得到一个月的备份。
我希望备份脚本对数据进行 gzip 压缩并将数据流式传输到 S3,以节省本地磁盘空间和 IO。
假设 S3 命令行工具已安装并配置。
答案1
#!/usr/bin/env bash
# List folders here that may or may not be under base path.
# If folder isn't under base path we do nothing.
# If it exists we back it up to S3.
# S3 file is stamped to day of month.
# So you have a months worth of backups.
declare -a folders=(
"elasticsearch"
"jenkins"
"some-cool-app"
)
BASE_PATH="/home/ubuntu/"
BUCKET="my.cool.bucket"
for FOLDER in "${folders[@]}"
do
test -d ${BASE_PATH}${FOLDER} && \
tar -cz -C ${BASE_PATH} ${FOLDER} \
| aws s3 cp - s3://${BUCKET}/${FOLDER}-$(date '+%d').tgz
done