如何轻松地将 EC2 上的多个文件夹备份到 S3

如何轻松地将 EC2 上的多个文件夹备份到 S3

我在 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

相关内容