云原生运维后端容器编排【免费下载链接】all-in-one The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.项目地址https://gitcode.com/GitHub_Trending/al/all-in-one点击查看免费下载导读Nextcloud All-in-OneAIO把备份与恢复作为官方内置的一等公民功能你只需在管理界面点几下按钮就能完成整机备份、完整性校验、时间点恢复以及设定每日自动备份底层则由 BorgBackup 容器驱动配合主容器的状态机在备份前后自动停止/启动全部服务容器。本文以 QA 测试文档 tests/QA/020-backup-and-restore.md 的验收条目为主线结合仓库中 DockerController.php、ConfigurationManager.php 等源码实现讲清备份/恢复的每个界面区块、配置规则与底层执行链路读完你既能独立完成全流程验证也能理解其设计原理。Backup and restore 区块整体结构在 AIO 管理界面中展开Backup and restore备份与恢复区块后会依次呈现以下六个子区块Backup information备份信息——展示当前备份状态、上次备份时间等概要信息Backup creation创建备份——提供 Create backup 按钮手动触发一次完整备份Backup check备份校验——提供 Check backup integrity 按钮对已有归档执行完整性检查Backup restore恢复备份——列出全部可用归档并支持选择某一归档执行恢复Daily backup每日备份——配置每日自动备份的触发时间24 小时制以及是否开启自动更新与成功通知Additional backup location / directories附加备份位置/目录——把宿主机目录或 AIO 卷追加进备份范围。对应的前端模板位于 php/templates/includes/backup-dirs.twig而真正驱动这些按钮动作的是 DockerController.php 中的一组入口方法其核心机制是给 BorgBackup 容器注入不同的backupMode详见下文底层原理。手动创建备份停服 → 备份 → 重启点击Create backup按钮后后端实际执行的是 DockerController::startBackup()将backupMode置为backup调用PerformRecursiveContainerStop()以依赖顺序停止全部容器含 Nextcloud 主容器保证备份期间没有进程写入数据得到一致性的快照启动nextcloud-aio-borgbackup容器由它完成归档备份结束后BorgBackup 容器退出面板随后会重新把各容器按依赖顺序拉起这正对应 QA 文档中过一会儿能看到容器正在启动、备份显示成功的预期。手动备份的定时任务入口在 php/src/Cron/CreateBackup.php它把 PHP 内存上限提到 2GBini_set(memory_limit, 2048M)后直接调用startBackup()。也就是说无论你在界面上点按钮还是通过 cron 触发最终都汇入同一条停容器 → 跑 Borg → 恢复容器的执行路径。校验备份完整性borg check点击Check backup integrity按钮对应 DockerController::checkBackup()将backupMode置为check随后直接启动nextcloud-aio-borgbackup容器执行borg check之类的完整性校验无需先停止其他容器。同样地cron 任务 php/src/Cron/CheckBackup.php 与界面按钮殊途同归同样将内存上限提到 2GB然后调用checkBackup()。校验完成后界面上的 Last check 会刷新为成功或失败的结果。恢复备份按时间点选择并强制回滚归档列表从新到旧恢复区块应列出所有可用备份归档并按从最新到最旧的顺序排列。这一排序逻辑可以在 ConfigurationManager.php 中看到读取备份归档列表文件后逐行解析出每个归档对应的时间戳最后通过array_reverse()反转数组保证界面上最新的归档排在最前。恢复动作的执行链路点击Restore selected backup后StartBackupContainerRestore() 会开启配置事务读取请求体中的selected_restore_time要恢复的归档时间点与restore-exclude-previews恢复时是否排除预览图默认不排除将backupMode置为restore并把上述两个值分别持久化到配置项selected-restore-time与restore-exclude-previews见 ConfigurationManager.php以forceStopNextcloud true强制停止所有容器恢复场景下不允许 Nextcloud 处于运行态启动nextcloud-aio-borgbackup容器执行恢复恢复完成后容器重新启动界面上的 Last restore 显示恢复是否成功。这些配置随后会作为环境变量注入 BorgBackup 容器BORGBACKUP_MODEbackup/check/list/restore 等、SELECTED_RESTORE_TIME、RESTORE_EXCLUDE_PREVIEWS置 1 表示排除预览图映射关系定义在 ConfigurationManager.php。Daily backup每日自动备份的完整验收24 小时制时间格式校验Daily backup 区块允许输入 24 小时制时间例如04:00合法而24:00、dfjlk等非法输入会被拒绝。提交后时间被写入每日备份时间文件并在同一位置出现 删除该设置 的选项——对应 ConfigurationController.php 中对daily_backup_time与delete_daily_backup_time两个表单字段的处理以及 ConfigurationManager::deleteDailyBackupTime() 的删除逻辑。触发后的自动登出与运行状态QA 文档特意提示了一个可自测的验证方式把每日备份时间设成只比当前时间早 1 分钟随后时间一到界面会自动将你登出刷新页面即可确认重新登录后可以看到自动备份正在运行的状态稍候片刻能看到各容器依次启动Backup and restore 区块显示备份成功。从源码结构看主容器通过 Containers/mastercontainer/dinit.d/backup-time-file-watcher 这类看护进程监听每日备份时间文件的变化并触发备份配合 StartAndUpdateContainers.php 等 cron 任务完成备份后把容器拉起来的收尾工作。备份结果通知每日备份结束后的成败通知由 php/src/Cron/BackupNotification.php 负责读取 BorgBackup 容器的退出码0视为成功、大于 0视为失败并通过sendNotification()向 Nextcloud 推送 Daily backup successful!/failed! 消息。如果你不希望收到成功通知可以设置环境变量SEND_SUCCESS_NOTIFICATIONS0此时只把成功结果记录到日志。另外值得一提的是UPDATE_NEXTCLOUD_APPS环境变量在每日备份运行中且启用了自动更新时才会置为yes见 ConfigurationManager.php即 Nextcloud 应用自动更新被设计为随每日备份流程执行避免单独更新带来的停机窗口。Additional backup directories附加备份目录的合法性规则在附加备份目录输入框中QA 文档给出了三个典型用例/etc宿主机绝对路径与nextcloud_aio_mastercontainerAIO 卷名应被接受而nextcloud/test应被拒绝。其校验逻辑位于 ConfigurationManager::setAdditionalBackupDirectories()if (!preg_match(#^/[.0-9a-zA-Z/_-]$#, $entry) !preg_match(#^[.0-9a-zA-Z_-]$#, $entry)) { throw new InvalidSettingConfigurationException(You entered unallowed characters! Problematic is . $entry); }两条正则分别对应两种合法形态^/[.0-9a-zA-Z/_-]$以/开头的宿主机绝对路径如/etc、/data/backup^[.0-9a-zA-Z_-]$不带斜杠的纯卷名/相对名如nextcloud_aio_mastercontainer。而nextcloud/test既不以/开头、又包含/两个正则都无法匹配因此被拒绝。非法输入会抛出 InvalidSettingConfigurationException界面会提示 You entered unallowed characters! Problematic is ...。校验通过后条目按换行拆分、去重后持久化getAdditionalBackupDirectoriesArray()使用array_unique去重见 ConfigurationManager.php当存在附加目录时注入 BorgBackup 容器的ADDITIONAL_DIRECTORIES_BACKUP环境变量会被置为yesConfigurationManager.phpBorg 备份脚本据此把宿主机目录或卷一并纳入归档范围。具体执行逻辑可以参考 BorgBackup 容器内的 backupscript.sh 与 start.sh排除规则则维护在 borg_excludes 中。底层原理backupMode 状态机与配置持久化backupMode 驱动 Borg 容器行为整个备份/恢复功能的核心是一个模式字段backupMode支持backup、check、list、restore、check-repair、test等多种取值分别在 DockerController.php 的对应入口中被写入startBackup()→backup创建备份checkBackup()→check校验完整性listBackup()→list列出归档StartBackupContainerRestore()→restore恢复check-repair与test对应校验修复与连通性测试场景该模式最终通过BORGBACKUP_MODE环境变量传递给nextcloud-aio-borgbackup容器ConfigurationManager.phpBorg 容器据此决定本次启动要执行备份、校验还是恢复脚本。配置的持久化与事务backupMode、selectedRestoreTime、restoreExcludePreviews等字段都通过ConfigurationManager的get()/set()读写其中恢复类操作还使用了startTransaction()/commitTransaction()保证多字段更新的一致性见 StartBackupContainerRestore()。每日备份时间与附加目录则直接以文件形式存放在主容器数据卷中GetDailyBackupTimeFile()、GetAdditionalBackupDirectoriesFile()等路径由 DataConst.php 定义getDailyBackupFileContent()还带 mtime 缓存避免频繁读盘。备份保留策略归档的保留策略由BORG_RETENTION_POLICY环境变量控制ConfigurationManager.php由 BorgBackup 的备份脚本在每次备份后按策略清理旧归档实现自动化的增量备份 定期精简。用 QA 测试计划验证你的实例如果你正在维护自己的 AIO 实例并想复现上述全部行为可以直接照搬 tests/QA/020-backup-and-restore.md 的验收步骤展开 Backup and restore确认六个子区块齐全检查恢复归档列表按从新到旧排列依次点击 Create backup、Check backup integrity稍候确认 Last backup / Last check 显示成功输入04:00应通过、24:00与dfjlk应被拒绝提交后确认出现删除选项把时间设为 1 分钟后触发自动备份验证自动登出、重新登录后显示备份运行中、容器自动重启、备份成功在附加备份目录中验证/etc、nextcloud_aio_mastercontainer合法而nextcloud/test非法并执行一次包含附加目录的备份确认成功。按照 QA 流程完成本项验证后即可继续进入密码修改的验收环节 tests/QA/030-aio-password-change.md关于如何在干净实例上跑通整套 QA 计划可参考 tests/QA/readme.md 与 develop.md。赞分享云原生运维后端容器编排【免费下载链接】all-in-one The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.项目地址https://gitcode.com/GitHub_Trending/al/all-in-one点击查看免费下载相关推荐Longhorn 系统备份与恢复System Backup/Restore深度指南原生跨版本备份、恢复与升级回滚实战Longhorn 系统备份与恢复System Backup/Restore深度指南原生跨版本备份、恢复与升级回滚实战 导读 本文围绕 Longhorn 自云原生存储高可用容器编排稳定视频无限模型评估工具自动化测试与比较框架全解析稳定视频无限模型评估工具自动化测试与比较框架全解析 Stable Video InfinitySVI作为ICLR 2026 Oral选中的创新视频生成模型人工智能大模型媒体生成深度学习计算机视觉微调FoundationDB 磁盘快照备份与恢复Disk Snapshot Backup Restore完整实战指南FoundationDB 磁盘快照备份与恢复Disk Snapshot Backup Restore完整实战指南 导读 本文基于 FoundationD分布式数据库KV存储数据库后端上一篇3分钟快速获取微信数据库密钥Sharp-dumpkey终极指南下一篇AMD显卡AI绘画终极指南ComfyUI-Zluda让AMD用户享受专业级AI创作创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考