-->
当前位置:首页 > 运维 > 正文内容

docker cp误覆盖文件恢复,docker容器内误删文件恢复

Luz1年前 (2023-09-19)运维1767

执行某个脚本前没有仔细看脚本内容,执行完以后发现docker里的服务起不来了,一看脚本里覆盖了多个docker容器内的文件,导致容器中业务运行异常,想办法恢复

1.使用备份

如果在操作之前有备份文件,可以将备份文件复制回原始位置。但是覆盖之前没有做备份,这个方法没用


2.使用 Docker 容器

如果容器仍在运行,没有重启,可以使用 Docker 容器内的文件系统恢复文件(可是脚本跑完以后自动重启了)。执行以下步骤:


   a. 进入容器:使用 `docker exec` 命令进入容器的终端

   docker exec -it <container_name_or_id> /bin/bash


   b. 在容器内,使用 `cp` 命令将文件从容器内复制到宿主机上的某个位置。

   cp /path/to/your/file /host/path/to/restore


3.使用 Docker 卷(Volume)

如果你在运行容器时使用了 Docker 卷(Volume),可以通过将容器内的文件复制到卷中,然后从卷中将文件还原到宿主机上。(可惜没有使用卷)


   a. 在容器内,将文件复制到 Docker 卷中

   cp /path/to/your/file /path/to/your/volume


   b. 然后,从卷中将文件复制到宿主机上

   docker cp <container_name_or_id>:/path/to/your/volume/file /host/path/to/restore


   这将从卷中将文件复制到宿主机上的指定目录。


4. 使用 Docker 镜像历史

如果没有备份,但之前的镜像中包含了需要的文件,可以尝试从以前的镜像历史中提取文件(索性原来的镜像还在)。执行以下步骤:


   a. 使用 docker images命令查看可用的镜像列表,并找到包含需要的文件的旧镜像。


   b. 使用 docker create命令创建一个临时容器,基于旧镜像

   docker create --name temp_container <old_image_name_or_id>


   c. 使用 `docker cp` 命令将文件从临时容器中复制到宿主机上

   docker cp temp_container:/path/to/your/file /host/path/to/restore



   d. 删除临时容器

   docker rm temp_container



测试业务

image.png

索性业务恢复起来了,以后在进行任何操作之前,务必备份重要数据和文件,以防意外发生。


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。