🛩️Appdata Backup - Docker/U盘/虚拟机配置备份插件
00 分钟
2023-8-6
2024-1-28
type
status
date
slug
summary
tags
category
icon
password
在博主过往处理过的问题案例中,不少用户在 unRAID 上使用 Docker 的过程中往往会遇到某些问题导致 Docker 不能正常运行,这时候如果配置文件没有损坏或者丢失,那么我们只需要重新创建 Docker 即可,因为配置文件还在的情况下,我们不需要再费时间去重新配置 Docker 应用中的各项参数。
之前有位朋友在转移数据的过程中出现了硬盘问题,导致硬盘里面的数据全都损坏了,不过还好先前我帮他通过插件备份了 Docker 参数,也算是不幸中的万幸。
但如果说配置文件损坏了或者丢失,那么造成的损失可能就比较大了。因此,本文将给读者们介绍如何在 unRAID 上通过插件去备份 appdata 文件夹中的各项 Docker 配置文件,以此确保即使出现了意外数据也不会丢失。

1、安装 Appdata Backup 插件

💡
特别说明 Appdata Backup 只支持 ≥ 6.12 的系统版本,如果你的系统版本 < 6.12 ,那么插件将会是另一个版本,名称叫做 Appdata Backup v2.5 (其设置方法也会有一些区别,但逻辑上是差不多的,会在文章末尾进行补充)。
Appdata Backup 是一款专门备份 Docker 配置文件的插件,用户可以根据需要去备份所有或者个别 Docker 的配置文件,并且此插件还支持备份系统 U 盘和虚拟机元数据文件。
This plugin allows you to back up and restore all your appdata content! It takes care of everything (stop/start docker containers) including some extras (update docker containers).
6.12 版本
6.12 版本
如果你无法通过应用商店安装插件,可以参考这里的方式进行离线安装。
复制以下命令到 unRAID 命令行窗口中运行:
notion image
下载完成之后,请手动到“插件 - 安装插件”中进行本地安装:
定位到 config - plugins 目录下
定位到 config - plugins 目录下
notion image

2、创建共享文件夹存放备份文件

为了演示,这里创建一个叫做 docker-backup 的共享文件夹。
notion image
notion image

3、备份规则参数详解

进入 Appdata Backup 插件设置:
notion image
(1)Main Settings
notion image
  1. Backup type - 备份模式(建议使用第二种模)
    1. 备份模式有两种:
    2. Stop all containers, backup, start all :停止所有 Docker 之后进行备份,备份完成后打开所有 Docker;
    3. Stop, backup, start for each container : 单独停止某个 Docker 然后进行备份,备份完成后再打开此 Docker,然后再轮到下一个 Docker 进行停止 → 备份 → 开启的步骤。
    4. notion image
  1. Delete backups if older than x days - 如果备份的时间超过 x 天,则删除备份
  1. Keep at least this many backups - 保存多少份配置文件
    1. 例如设置为 3 就表示只保留 3 份备份文件,超出了就删掉最早的那一份。
  1. Appdata source(s) - Docker 配置文件源目录
    1. notion image
      notion image
      Docker 配置文件源目录指的是需要备份的文件源路径,默认情况下 Docker 应用的配置文件都存储在 /mnt/user/appdata/appdata 路径下。此项设置可以配置多个路径地址,因此如果你需要备份不同位置下的 Docker 配置参数书,请在这里设置好对应路径。
      💡
      需要说明的是,插件会去检测每一个 Docker 映射了哪些文件夹,然后去判断这些文件夹是属于 Internal volume 还是 External volume Internal volume 指的是如 /mnt/user/appdata/nastool 这种位于 appdata 内的 Docker 配置文件夹,External volume 指的是类似 /mnt/user/Downloads/movie 这样不存在于 appdata 内的文件夹。插件一定会备份前者,但后者是根据需要进行备份。
  1. Backup destination - 备份文件存储目录
    1. 指的是备份文件存放的目录,这里设置为之前创建好的 docker-backup 共享文件夹(路径为 /mnt/user/docker-backup ),具体存放在哪里请读者根据需要设置。
  1. Use Compression - 是否启用备份文件压缩(建议设置为 Yes, multicore
    1. notion image
      建议设置为 Yes, multicore ,表示备份时启用文件压缩并使用 zstdmt 压缩方法,这种方式会利用 CPU 的多核性能进行压缩,但备份期间也会加大 CPU 的负载。
      如果使用 Yes, normal 则表示使用传统的 gzip 方式进行压缩。
  1. Verify Backup - 备份验证(建议设置为 Yes
    1. 表示备份过程中会对错误进行检测,建议设置为 Yes
  1. Ignore errors during backup - 无视备份过程中的错误(建议设置为 No
    1. 表示无视备份期间产生的错误,建议设置为 No
  1. Backup the flash drive - 是否备份 U 盘
    1. 此插件除了备份 Docker 配置之外,还可以对系统 U 盘进行备份,如有需要可以打开。
  1. Backup VM meta - 是否备份虚拟机的元数据文件.xml
    1. 这里的虚拟机元数据文件指的是 unRAID 虚拟机的配置模板,如:
      notion image
(2)Notifications, scheduling and retention
notion image
  1. Notification Settings - 通知设置
    1. 指的是备份过程中如果出现告警或错误时的通知,建议开启此功能。
      Errors Only 表示只有在出现错误时才推送通知;
      Warnings or errors 表示如果出现告警或者错误都会进行消息推送。
  1. Scheduled Backup Frequency - 定时任务
    1. 这里可以根据日、周、月来设置定时备份任务,读者们根据实际来配置就行。图片里我设置的 Custom 自定义定时设置,使用了 Cron 表达式来设置备份的时间。
      0 5 */3 * * 表示每三天的凌晨五点整进行备份。
      什么是 Cron 表达式
      Cron 表达式是一种用于定期执行任务的时间表达式,常用于 Linux 和其他类 Unix 操作系统中。它由 6 个字段组成,分别表示时间单位和时间范围。这些字段按照从左到右的顺序排列,每个字段之间使用空格或制表符分隔。
      下面是 Cron 表达式的各个字段及其对应的含义:
      1. 分钟(0-59):表示每小时的哪一分钟执行任务。
      1. 小时(0-23):表示每天的哪个小时执行任务。
      1. 日期(1-31):表示每月的哪一天执行任务。
      1. 月份(1-12):表示每年的哪个月执行任务。
      1. 星期几(0-7,其中0和7都表示星期日):表示每周的哪一天执行任务。
      Cron表达式还支持一些特殊字符和符号:
      • 星号(*):表示该字段可以匹配该字段的所有可能的值。
      • 逗号(,):用于分隔字段中的多个值,表示同时匹配多个值。
      • 连接符(-):用于指定字段的范围,表示匹配范围内的所有值。
      • 正斜杠(/):用于指定字段的步长值,表示按照指定的步长跳过部分值。
      以下是一些示例Cron表达式:
      • 0 0 * * *:每天的午夜(0点)执行任务。
      • 0 12 * * 1-5:每周一到周五的中午12点执行任务。
      • 0 */2 * * *:每两个小时执行一次任务。
      • /5 * * * *:每五分钟执行一次任务。
(3)Docker specific settings
notion image
Update containers after backup - 是否在备份完成后更新 Docker 镜像(建议设置为 No
表示如果 Docker 镜像有更新,那么在备份结束之后需不需要对 Docker 进行更新,建议设置为 No ,有更新时手动去更新就行。
(4)Per container settings
notion image
此板块可以针对具体某个 Docker 应用的备份策略进行修改。
  1. Skip - 是否跳过此 Docker 的备份
  1. Save external volumes - 是否备份除 appdata 文件夹之外的文件夹
    1. notion image
      前面简单解释过了 ExternalInternal 文件夹之间的区别,这里以 alist 这个 Docker 为例,可以看到 alist 这个 Docker 映射了两个文件夹路径,一个是 /mnt/user ,另一个是 /mnt/cache/appdata/alist
      • External volume 指不属于 /mnt/user/appdata 内的文件夹,那么在这里 /mnt/user 不位于 appdata 文件夹内,所以属于 External volume ;
      • Internal volume 指的是位于 /mnt/user/appdata 内的配置文件夹,这里指的是 /mnt/cache/appdata/alist ,也就是 alist 配置文件夹的保存目录。
      这个选项的作用就是是否需要备份 External 文件夹,也就是是否需要备份 /mnt/user ,那么很明显是不需要的,所以设置为 No 就行。
  1. 这三个选项前面都解释过了,这里不在解释,一般保持默认设置即可。
  1. Excluded folders/files - 排除不需要备份文件夹
    1. 如果一个 Docker 映射了多个路径,那么可以在列表中选择需要排除不进行备份的文件夹。如果不指定一般也没什么,因为插件会根据前面说过的 ExternalInternal 逻辑进行备份。
      notion image
  1. Dont stop container - 是否在不停止 Docker 的情况下进行备份
    1. 除非有特别的要求,不然应该是保持 No 选项不变,不然在 Docker 没有停止的情况下进行备份可能会导致意想不到的问题。
(5)Start order
  • 如果在前面的 Main Settings 选择 Backup type 模式为 Stop all containers, backup, start all ,那么将会按照这里的列表顺序去逐一对 Docker 进行停止 → 备份 → 开启的备份操作。
    • “Stop all containers, backup, start all“ 模式下的顺序
      “Stop all containers, backup, start all“ 模式下的顺序
  • 如果在前面的 Main Settings 选择 Backup type 模式为 Stop all containers, backup, start all ,那么
    • 开始备份时,停止 Docker 进行备份的顺序是反过来,从下至上逐一停止 Docker 然后执行备份;
    • 完成备份后,启动 Docker 的顺序是按照列表从上至下逐一开启 Docker 。
    • "Stop all containers, backup, start all” 模式下的顺序
      "Stop all containers, backup, start all” 模式下的顺序
(6)Custom scripts
notion image
此配置的作用是在备份过程中的某个节点执行相应的自定义脚本,有四个节点可以选择脚本进行执行:
  • Pre-run script - 在备份机制执行前
  • Pre-backup script - 备份开始前(在 Docker 停止后)
  • Post-backup script - 备份结束后(在 Docker 恢复启动前)
  • Post-run script - 在备份机制完成后
(7)Some extra options
除了上面提到的相关、涉及到备份的文件夹,你还可以手动在这里的列表中指定还需要备份哪些额外的文件夹,这些额外的文件夹将会被打包压缩到叫做 extra_files.tar.gz 的压缩包中。
notion image
(8)保存配置
当你完成所有的配置后,点击 SAVE 保存配置:
notion image
如果你需要立即执行一遍备份,点击 MANUAL BACKUP
notion image
(9)备份好的文件长什么样
notion image
每一次执行任务,插件都会创建相应的文件夹,文件夹的命名方式是以下划线 _ 分割相应的信息,例如:
  • ab :为此插件 Appdata Backup 的名称缩写。
  • 20230730 :年月日
  • 050005 :时分秒
notion image
文件夹内主要分为这四类备份的文件:
  • .zst 文件:是对应 Docker 的配置文件夹压缩包,如果在 Main Settings - Use Compression 中选择了 Yes, multicore ,那么将会采用 zstdmt 压缩方法备份文件,因此文件名后缀为 .zst ;如果使用的是另一个压缩模式,则后缀名为 .gzip
  • backup.log :备份日志文件,用于检查和 Debug 。
(10)配置参考(看不懂的读者可以按照这里的参数去配置)
这里提供配置好的参数供读者参考,如果读者一开始还不太会配置,可以按照这里的配置顺序去设置,说明如下:
  • 此配置每 3 天进行一次备份,备份时间在凌晨 5 点整进行。
    • 使用 zstdmt 压缩方法进行压缩,可以实现更高的压缩比,节省存储空间。
    • appdata 文件夹的路径位于 /mnt/user
    • 将备份存储至 /mnt/user/docker-backup 文件夹内。
    • 除了备份 Docker 配置文件,还会同时备份虚拟机元数据文件( .xml )和系统 U 盘内的文件。
    • 设置完成后记得保存。
    notion image

    4、通过备份恢复配置

    步骤一:选择备份源
    notion image
    1. 选择 Restore 标签页。
    1. 确认存放备份文件的文件夹。
    1. 点击下一步 NEXT
    步骤二:选择需要恢复的备份版本
    然后点击 NEXT 进入下一步
    然后点击 NEXT 进入下一步
    步骤三:选择需要恢复的项
    notion image
    1. Restore backup config - 恢复本插件的配置(一般不需要勾选)
    1. Restore extra files - 恢复额外文件夹
      1. 指的是恢复 Some extra options 模块中指定的额外文件夹:
        notion image
    1. Restore VM meta - 恢复虚拟机元数据
      1. 这里的虚拟机元数据指的是 unRAID 虚拟机的配置模板。
    1. Restore templates - 恢复 Docker CA 模板
      1. 不了解什么是 Docker CA 模板的,可以看博主的新手教程:如何在 unRAID 上正确安装 Docker文章。
        notion image
    1. Restore containers - 恢复 Docker 配置文件
      1. 勾选上需要进行恢复的 Docker 后,点击 DO IT! 即开始进行恢复配置文件。
        notion image

    5、补充:Appdata Backup v2.5 的设置方法

    如果你的系统版本小于 6.12 ,那么你需要安装的是 Appdata Backup v2.5 插件:
    notion image
    如果你无法通过应用商店安装插件,可以参考这里的方式进行离线安装。
    复制以下命令到 unRAID 命令行窗口中运行:
    notion image
    下载完成之后,请手动到“插件 - 安装插件”中进行本地安装:
    定位到 config - plugins 目录下
    定位到 config - plugins 目录下
    notion image
    配置界面如下:
    notion image
    插件设置方法与 6.12 版本下的插件其实大同小异,参考这里的相关设置说明进行设置即可。
    备份恢复方式同理,这里就不赘述了。
    1. Appdata Share (Source) - 文件源
      1. 设置 appdata 的文件夹路径。
    1. Destination Share - 备份存储文件夹
      1. 设置备份文件的存储路径。
    1. Excluded Folders - 排除文件夹
      1. 可以排除不希望备份的文件夹。
    1. Use Compression - 是否启用备份文件压缩
      1. 建议启用 Yes
    1. Verify Backups - 校验备份
      1. 建议设置为 No
    1. lgnore errors during backup - 无视备份过程中的错误
      1. 建议设置为 No
    1. Create separate archives (one per folder) - 单独创建备份文件夹
      1. 建议设置为 Yes ,其作用是为每一个需要备份的 Docker 容器创建对应的备份文件,而不是将所有的配置都打包压缩。
    1. USB Backup Destination - USB 备份存储目录
      1. 如果不需要备份 U 盘就不需要设置。
    1. libvirt.img Destination - 虚拟机配置 libvirt.img 备份目的目录
      1. 如果不需要备份虚拟机元数据就不需要设置。
    1. Notification settings - 通知设置
      1. 建议设置为 Error Only 即可,只有备份出错时才通知。
    1. Path To Custom xxx Script - 脚本
      1. 一般用不上,高级用户自行配置。
    1. Update Applications On Restart - 重启容器时是否更新 Docker 镜像
      1. 如果 Docker 可以更新,那么可以借助此设备在插件恢复 Docker 启动时进行升级,建议不设置。
    1. Scheduled Backup Frequency - 备份任务时间频率设置
      1. 可以年、月、日进行备份,或者使用自定义 Cron 语法表达去定义更个人化的时间配置。
         

    评论