写了个一键备份docker容器的脚本

发表:1年前 更新:1年前
开发 |
4909
| 7

写了个一键备份docker容器的脚本,代码如下:

#!/bin/bash

# 备份目录
backup_dir="/www/backup/docker"

# Docker 容器列表
container_list=$(docker ps -q)

# 备份文件名
backup_file="${backup_dir}/$(date +%Y%m%d)/$(date +%H)"
if [ ! -d "$backup_file" ]; then
    mkdir -p "$backup_file"
fi

# 备份每个容器的数据
for container_id in $container_list; do
    container_name=$(docker inspect -f '{{.Name}}' "$container_id" | sed 's,^/,,')
    docker export "$container_id" | gzip > "${backup_file}/${container_name}.tar.gz"
done

使用方法

创建backup.sh文件,将以上代码写进此文件中,修改代码中的备份目录,然后运行以下命令:

sh backup.sh

运行此命令后docker会导出所有容器到你指定的目录,默认为:/www/backup/docker

signature
保持理智

全部评论

langvs

发表 :1年前
next
zhuchunshu

发表 :1年前
zhuchunshu 发表 1年前
如果是用docker-compose启动的容器,就把docker-compose.yml文件...
@langvs
next
zhuchunshu

发表 :1年前
zhuchunshu 发表 1年前
要恢复使用该脚本备份的Docker容器的数据,您可以按照以下步骤进...
如果是用docker-compose启动的容器,就把docker-compose.yml文件放回跟之前一样的位置,然后运行docker-compose -d,最后再导入数据就好
next
zhuchunshu

发表 :1年前

要恢复使用该脚本备份的Docker容器的数据,您可以按照以下步骤进行操作:

  1. 找到要恢复的备份文件:备份文件的路径是/www/backup/docker/日期/小时/容器名称.tar.gz。根据您的需求,找到相应日期和小时的备份文件以及要恢复的容器名称的.tar.gz文件。

  2. 创建一个新的Docker容器:在恢复数据之前,您需要创建一个新的Docker容器来承载已备份的数据。可以使用以下命令创建一个新的容器:

    docker create --name <容器名称> <镜像名称>

    请将<容器名称>替换为您要创建的容器的名称,将<镜像名称>替换为与备份数据相对应的Docker镜像的名称。

  3. 恢复容器数据:使用以下命令将备份文件中的数据恢复到新创建的容器中:

    zcat <备份文件路径> | docker import - <容器名称>

    请将<备份文件路径>替换为您要恢复的.tar.gz备份文件的完整路径,将<容器名称>替换为新创建的容器的名称。

  4. 启动容器:使用以下命令启动已恢复数据的容器:

    docker start <容器名称>

    请将<容器名称>替换为您之前创建的容器的名称。

现在,您应该已成功恢复了使用该脚本备份的Docker容器的数据。您可以验证容器是否正常运行,并检查数据是否恢复正确。

next
zhuchunshu

发表 :1年前 | 修改过
langvs 发表 1年前
然后在出一个个全自动恢复脚本 ::小黄脸:[脱单doge]::

基本上就是这样

#!/bin/bash

# 恢复备份文件到Docker容器
function restore_backup() {
    # 提示输入备份文件路径
    read -p "请输入备份文件的完整路径: " backup_file

    # 检查备份文件是否存在
    if [ ! -f "$backup_file" ]; then
        echo "备份文件不存在或无效路径!"
        exit 1
    fi

    # 提示输入容器名称
    read -p "请输入要恢复数据的容器名称: " container_name

    # 检查容器是否存在
    if ! docker inspect "$container_name" >/dev/null 2>&1; then
        echo "容器 $container_name 不存在!"
        exit 1
    fi

    # 恢复容器数据
    echo "正在恢复容器数据..."
    zcat "$backup_file" | docker import - "$container_name"

    # 启动容器
    echo "正在启动容器..."
    docker start "$container_name"

    echo "恢复完成!"
}

# 执行恢复函数
restore_backup
next
zhuchunshu

发表 :1年前
langvs 发表 1年前
然后在出一个个全自动恢复脚本 ::小黄脸:[脱单doge]::
::小黄脸:[笑哭]:: 可以,但没必要
next
langvs

发表 :1年前
然后在出一个个全自动恢复脚本 ::小黄脸:[脱单doge]::
评论

无权限

请登录后评论

RunPod公众号

赞助商

联系我们

QQ群:798695907

邮箱:laravel@88.com