IT技术博客大学习 共学习 共进步

Linux 备份和恢复 docker volume 脚本分享

Frytea 2026-06-03 09:03:24 累计浏览 1 次
本机暂存

脚本

Dump

docker-volume-dump.sh

#!/usr/bin/env bash

dump_dir=~/docker-volume-dump

if [ ! -d $dump_dir ]; then
  mkdir -p $dump_dir
fi

for volume in $(docker volume ls -q); do
  dump_file=$dump_dir/$volume.tar.gz
  if [ -f $dump_file ]; then
    ( set -x; echo rm $dump_file; )
  fi
  echo "Dump docker volume \"$volume\" to \"$dump_file"\"
  docker run --rm -v $volume:/from alpine sh -c "cd /from; tar -cf - ." | gzip > $dump_dir/$volume.tar.gz
done

Restore

docker-volume-restore.sh

#!/usr/bin/env bash

dump_dir=~/docker-volume-dump

for file in ~/docker-volume-dump/* ; do
  volume=$(basename $file)
  volume=${volume%%.*}
  echo "$volume"
  docker volume inspect $volume &>/dev/null
  if [ $? -eq 0 ]; then
    ( set -x; docker volume rm $volume 1>/dev/null )
  fi
  ( set -x; docker volume create $volume 1>/dev/null )
  cat $file | docker run --rm -i -v $volume:/to alpine sh -c 'tar zxvf - -C /to'
done

References

建议继续学习

  1. Bash的模式和配置文件加载 (累计阅读 24,341)
  2. 公司倒了,请让领导先走 (累计阅读 13,341)
  3. 高效Linux用户需要了解的命令行技能 (累计阅读 12,741)
  4. linux 建立两台机器的信任关系 (累计阅读 11,421)
  5. 利用脚本分析日志并利用snmp自定义OID,再通过cacti画图 (累计阅读 10,000)
  6. linux中设置alias永久生效 (累计阅读 9,540)
  7. Bash脚本15分钟进阶教程 (累计阅读 8,981)
  8. 你可能不知道的Shell (累计阅读 8,221)
  9. Bash 小技巧:给目录加上书签,快速切换目录 (累计阅读 8,022)
  10. 三种东西永远不要放到数据库里 (累计阅读 7,940)