#!/bin/bash

# 定义备份的根目录
BACKUP_ROOT="/root/backup"

# 使用当前日期和时间创建备份目录,格式为 YYYYMMDD_HHMMSS
CURRENT_DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_DIR="$BACKUP_ROOT/$CURRENT_DATE"

# 确保备份目录存在
mkdir -p $BACKUP_DIR

# 获取所有正在运行的容器的卷
VOLUMES=$(docker inspect $(docker ps -q) --format '{{ range .Mounts }}{{ .Name }} {{ end }}' | tr ' ' '\n' | sort -u)

# 遍历每个卷并备份
for VOLUME in $VOLUMES; do
    # 获取卷的挂载点
    MOUNT_POINT=$(docker volume inspect $VOLUME | grep Mountpoint | cut -d '"' -f 4)
    
    # 定义备份文件的名称
    BACKUP_FILE="$BACKUP_DIR/$VOLUME.tar.gz"
    
    # 使用 tar 命令备份卷
    tar -czf $BACKUP_FILE -C $MOUNT_POINT .
    
    echo "Backup for volume $VOLUME completed: $BACKUP_FILE"
done

echo "All backups completed in directory: $BACKUP_DIR"