# docker-bak-script **Repository Path**: lingfengsu/docker-bak-script ## Basic Information - **Project Name**: docker-bak-script - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-25 - **Last Updated**: 2025-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Docker Backup & Restore 工具 这是一套 Node.js 脚本,用于备份和恢复 Docker 环境中的数据,包括卷、镜像和容器信息。 ## 功能特性 - 备份 Docker 卷及其数据 - 备份 Docker 镜像 - 备份 Docker 容器信息和配置 - 可自定义备份文件名和路径 - 支持选择性备份不同类型的数据 - 支持将备份文件传输到远程服务器 ## 安装 确保您已经安装了 Node.js 和 Docker。 克隆此仓库或下载所有文件到本地目录: ```bash git clone cd docker-backup-restore ``` ## 配置 编辑 [config.json](file:///Volumes/SJL%E7%9A%84%E7%A1%AC%E7%9B%98/tofly/docker-bak-script/config.json) 文件来自定义备份设置: ```json { "backup": { "filename": "docker-backup", "path": "./backups" }, "docker": { "volumes": true, "images": true, "containers": true }, "remote": { "enabled": true, "host": "192.168.1.100", "port": 22, "username": "backup", "password": "", "privateKey": "~/.ssh/id_rsa", "remotePath": "/backup/docker" } } ``` - `backup.filename`: 备份文件的基础名称 - `backup.path`: 备份存储的目录路径 - `docker.volumes`: 是否备份 Docker 卷 - `docker.images`: 是否备份 Docker 镜像 - `docker.containers`: 是否备份 Docker 容器信息 - `remote.enabled`: 是否启用远程传输功能 - `remote.host`: 远程服务器 IP 地址 - `remote.port`: 远程服务器 SSH 端口 - `remote.username`: 远程服务器用户名 - `remote.password`: 远程服务器密码(可选,推荐使用私钥认证) - `remote.privateKey`: SSH 私钥路径 - `remote.remotePath`: 远程服务器存储路径 ## 使用方法 ### 执行备份 ```bash npm run backup # 或者直接运行 node docker-backup.js ``` 备份文件将按照 `[filename]-[timestamp]` 格式保存在指定的备份目录中。 ### 执行恢复 ```bash npm run restore backups/docker-backup-2023-10-01T12-00-00 # 或者直接运行 node docker-restore.js backups/docker-backup-2023-10-01T12-00-00 ``` 将备份路径作为参数传递给恢复脚本。 ### 传输备份到远程服务器 ```bash npm run transfer # 或者传输特定的备份 npm run transfer backups/docker-backup-2023-10-01T12-00-00 # 或者直接运行 node transfer-backup.js node transfer-backup.js backups/docker-backup-2023-10-01T12-00-00 ``` 传输脚本会自动将备份文件打包并通过 SCP 协议传输到远程服务器。 ## 备份内容详情 ### 卷备份 (volumes/) - 每个卷的数据导出为 `.tar` 文件 - 卷列表信息 ([volumes-list.txt](file:///Volumes/SJL%E7%9A%84%E7%A1%AC%E7%9B%98/tofly/docker-bak-script/volumes-list.txt)) ### 镜像备份 (images/) - 每个镜像保存为 `.tar` 文件 - 镜像列表信息 ([images-list.txt](file:///Volumes/SJL%E7%9A%84%E7%A1%AC%E7%9B%98/tofly/docker-bak-script/images-list.txt)) ### 容器备份 (containers/) - 每个容器的详细信息 (`[container-id]-inspect.json`) - 容器日志信息 (`[container-id]-logs.txt`) - 容器列表信息 ([containers-list.txt](file:///Volumes/SJL%E7%9A%84%E7%A1%AC%E7%9B%98/tofly/docker-bak-script/containers-list.txt)) ## 注意事项 1. 备份过程需要 Docker 正在运行 2. 恢复卷时,如果同名卷已存在,将会被删除并重新创建 3. 恢复镜像时,会使用 `docker load` 命令加载镜像 4. 容器不会自动恢复和重启,只备份其配置和状态信息 5. 请确保有足够的磁盘空间来存储备份文件 6. 远程传输功能需要本地安装 `scp` 命令 7. 使用 SSH 私钥认证比密码认证更安全 8. 传输完成后,本地的压缩包会被自动清理