所以,我正在尝试恢复从另一台主机备份的 docker 卷。
此特定实例是包含 grafana 数据的卷的备份,位于 /var/lib/grafana
备份已完成
docker run --rm --volumes-from Grafana -v $(pwd):/backup busybox tar cvfz /backup/grafana.tar /var/lib/grafana
其中
Grafana
是附加卷的容器的名称
在我的新主机上,传输 grafana.tar 文件后,我已经运行了
docker run --rm --volumes-from grafana-new -v $(pwd):/backup busybox sh -c "cd /var/lib/grafana && tar xvf /backup/grafana.tar --strip 1"
其中 grafana-new 是新容器,它在容器 /var/lib/grafana 中附加了具有相同路径的卷
问题是,即使我在终端上看到,它似乎也无法恢复数据
nicola@nicola-virtualbox:~/Documenti/volume-backup$ docker run --rm --volumes-from grafana-new -v $(pwd):/backup busybox sh -c "cd /var/lib/grafana && tar xvf /backup/grafana.tar --strip 1"
var/lib/grafana/
var/lib/grafana/png/
var/lib/grafana/csv/
var/lib/grafana/plugins/
var/lib/grafana/alerting/
var/lib/grafana/alerting/1/
var/lib/grafana/alerting/1/__default__.tmpl
var/lib/grafana/grafana.db
我这么说是因为当我尝试使用备份数据的主机上使用的密码登录时,它显示密码错误
我哪里做错了?
所以,事实证明,要备份和恢复您需要的 docker 卷
# check `docker volume ls´ for volume names
source_volume=name_of_your_source_volume
backup_date=$(date +"%Y%m%d")
docker run --tty --rm --interactive --volume ${source_volume}:/source --volume ${PWD}/archive:/backup alpine tar czvf /backup/${source_volume}_${backup_date}.tar.gz -C /source .
并像这样恢复它们:
target_volume=name_of_your_target_volume
restore_archive=${volume}_${backup_date}.tar.gz # of course the real name without placeholders
docker run --tty --rm --interactive --volume ${target_volume}:/target --volume ${PWD}/archive:/backup alpine tar xzvf /backup/${restore_archive} -C /target
恢复时,tar.gz 必须位于
/archive/
文件夹中