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