# 备份、迁移与权限管理

URL: https://caijiao.org/docker/storage/backup-migrate
Source: docs/docker/storage/backup-migrate.md
Description: 本章节讲解 Docker 容器数据的备份与迁移方法，包括卷和绑定挂载的数据备份、跨主机迁移，以及权限配置和安全管理技巧，帮助开发者保障数据安全与可用性。

容器数据的持久化与安全管理是 Docker 运维的重要部分。本节介绍数据备份、迁移和权限管理的最佳实践。

## 1. 数据备份

### 1.1 备份卷数据

```bash
# 创建容器将卷内容导出为 tar 文件
docker run --rm -v myvolume:/data -v $(pwd):/backup busybox \
  tar czf /backup/myvolume-backup.tar.gz -C /data .
````

### 1.2 备份绑定挂载数据

```bash
# 直接使用宿主机命令
tar czf backup-config.tar.gz /host/path
```

## 2. 数据迁移

### 2.1 迁移卷到另一主机

1. 备份卷：

```bash
docker run --rm -v myvolume:/data -v $(pwd):/backup busybox \
  tar czf /backup/myvolume-backup.tar.gz -C /data .
```

2. 将 tar 文件传输到目标主机
3. 恢复卷：

```bash
docker volume create myvolume
docker run --rm -v myvolume:/data -v $(pwd):/backup busybox \
  tar xzf /backup/myvolume-backup.tar.gz -C /data
```

### 2.2 迁移绑定挂载

* 直接复制宿主机目录即可：

```bash
scp -r /host/path user@remote:/host/path
```

## 3. 权限管理

* 容器访问宿主机文件时需确保用户权限：

```bash
docker run -v /host/path:/container/path -u $(id -u):$(id -g) myapp
```

* 修改宿主机目录权限：

```bash
chown -R 1000:1000 /host/path
chmod -R 755 /host/path
```

* 使用只读挂载防止容器修改宿主机数据：

```bash
docker run -v /host/path:/container/path:ro myapp
```

## 4. 最佳实践

* 定期备份重要数据
* 使用命名卷管理数据，便于迁移和备份
* 避免在生产环境随意绑定宿主机目录
* 使用权限和只读挂载提升安全性
* 对于敏感数据，可使用加密或专用存储卷

---

通过掌握数据备份、迁移与权限管理技巧，可以有效保障容器数据安全与可用性，提升生产环境运维效率。
