💽
パーミッションを保持したままDockerのボリュームをバックアップ・復元する
多分これが一番早いと思います
バックアップ
Dockerボリュームの実体は/var/lib/docker/volumes/$VOLUME_NAME/_data
にあります。tarを使うことで、パーミッションや所有者といったメタデータを含めてバックアップできます。
VOLUME_NAME=test_volume
BACKUP_DESTINATION=./backup.tar.gz
sudo tar -czf "$BACKUP_DESTINATION" -C "/var/lib/docker/volumes/$VOLUME_NAME" _data
復元
復元する際は、--preserve-permissions --numeric-owner
を指定するとメタデータを保持して展開できます。--numeric-owner
を指定しないとUIDやGIDが書き換わってしまうことがあるので注意が必要です[1]。
VOLUME_NAME=test_volume
RESTORE_SOURCE=./backup.tar.gz
docker volume create "$VOLUME_NAME"
sudo rm -r "/var/lib/docker/volumes/$VOLUME_NAME/_data"
sudo tar -xzf "$RESTORE_SOURCE" -C "/var/lib/docker/volumes/$VOLUME_NAME" --preserve-permissions --numeric-owner
Discussion