Skip to content

Instantly share code, notes, and snippets.

@yuhr123
Last active February 7, 2024 10:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yuhr123/bddf3801a58cdbe47fb65e5c1f1d6644 to your computer and use it in GitHub Desktop.
Save yuhr123/bddf3801a58cdbe47fb65e5c1f1d6644 to your computer and use it in GitHub Desktop.
导出并打包 Docker volume 上传到 s3 对象存储
#!/bin/bash
# Docker Volume: ghost_data
# MariaDB Container: mariadb
# 定义文件名变量
data_filename="ghost_data-`date +%Y-%m-%d_%H%M%S`.tar.gz"
db_filename="ghost_db-`date +%Y-%m-%d_%H%M%S`.sql"
# 通过临时创建的中间容器挂载 volume 并压缩打包成带时间的 tar.gz 文件
docker run --rm \
-v ghost_data:/source \
-v $(pwd):/backup \
alpine sh -c "cd /source && tar zcf /backup/$data_filename ."
# 导出 mariadb 容器中的 ghost 数据库
# $MYSQL_ROOT_PASSWORD 是创建 mariadb 容器时设置的环境变量
docker exec mariadb \
sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --databases ghost' > ./$db_filename
# 备份文件到 s3 对象存储,需提前配置好 s3cmd
s3cmd put ./$data_filename s3://backup/data/ && rm -f ./$data_filename
s3cmd put ./$db_filename s3://backup/db/ && rm -f ./$db_filename
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment