运行与维护¶
CLI 工作流程¶
运行类命令都接受 --config,该选项可以放在子命令之前或之后。
asmr-tg-backup init --config config.toml
asmr-tg-backup status --config config.toml
asmr-tg-backup poll --config config.toml --once --no-process
asmr-tg-backup process --config config.toml
asmr-tg-backup run --config config.toml
init创建数据目录和 SQLite schema,不执行轮询。status输出任务数量和近期条目。poll --no-process只发现并排队,不下载。process不获取来源,只处理已排队任务。run启动持续来源轮询、worker、与提供方无关的直播轮询和可选控制循环。
使用 enqueue 可以单独加入一个 YouTube URL:
asmr-tg-backup enqueue --config config.toml \
https://www.youtube.com/watch?v=VIDEO_ID
原生后台服务可以直接注册或注销:
asmr-tg-backup service install
asmr-tg-backup service uninstall
注销命令只移除生成的 systemd unit,配置和数据目录中的内容都会保留。
来源和过滤器可以优先从 /panel 修改。需要手工精调时先校验再应用:
asmr-tg-backup sources path --config config.toml
asmr-tg-backup sources validate --config config.toml
asmr-tg-backup sources apply --config config.toml
asmr-tg-backup sources list --config config.toml
sources apply 只同步运行时数据库镜像,不会改写 config.toml;修改 config.toml
中的全局设置后仍需重启服务。
状态与备份¶
状态保存在 [app].data_dir 下,也可以由环境变量
ASMR_TG_BACKUP_DATA_DIR 覆盖。其中包括:
state.db和按版本生成的迁移备份;- 各提供方的下载文件以及 Telegram 衍生文件;
- yt-dlp archive 文件;
- 使用过 MTProto transport 后生成的
.session文件。
sources.toml 通常位于配置目录而不是数据目录。这里的 <config-stem> 表示去掉末尾
.toml 后的主配置文件名。完整备份包含:
- 主配置、来源目录和可选的
env; - 名为
<config-stem>.extensions.toml的托管扩展 sidecar; extensions/<config-stem>/下的 setup 私密文件,以及手工配置到其他位置的config_file;- 上述数据目录内容。
部署使用原生本地 Bot API 服务时,还要保存
~/.config/asmr-tg-backup/telegram-bot-api.env、
~/.config/systemd/user/asmr-tg-backup-telegram-bot-api.service,以及应用数据根目录下的
telegram-bot-api 目录。
使用默认 config.toml 时,托管文件分别是 config.extensions.toml 和
extensions/config/。这些文件可能包含代理订阅地址或其他凭据,因此备份位置应采用
与 bot token、MTProto session 相同的访问控制。
也可以单独执行
asmr-tg-backup sources export --config /path/to/config.toml --output sources.backup.toml
导出来源目录快照。对数据目录进行文件系统级备份前先停止应用,使 SQLite、下载文件和
session 处于同一份快照。复制本地 Bot API 数据前,也要停止对应的原生或 Compose 服务。
Compose Bot API 卷属于独立服务卷;部署依赖它时请单独备份。
更新 Compose 安装¶
更新会替换应用镜像,并保留配置和持久化卷。先停止应用,再备份 .env、
config.toml、./settings/、数据卷、挂载到容器内的扩展配置及其 Compose override,
以及派生镜像使用的 Dockerfile 或固定版本清单。服务栈包含 local-api profile 时,
同时停止该服务,并把 Bot API 卷纳入快照。
拉取并校验官方应用镜像,再重新创建容器:
docker compose stop asmr-tg-backup
docker compose --profile local-api stop telegram-bot-api # 仅 local-api 部署
docker compose pull asmr-tg-backup
docker compose run --rm asmr-tg-backup \
extensions doctor --config /config/config.toml
docker compose run --rm asmr-tg-backup \
sources validate --config /config/config.toml
校验通过后,只启动应用,或者恢复完整的本地 Bot API profile:
# 仅应用:
docker compose up -d asmr-tg-backup
# 应用与本地 Bot API profile:
docker compose --profile local-api up -d
docker compose ps
docker compose logs --tail=200 asmr-tg-backup
正常更新期间保留命名卷;docker compose down -v 会删除这些卷。
使用源码构建时,在两项校验前运行 docker compose build --pull asmr-tg-backup。启用扩展
的部署则更新派生镜像 FROM 中的核心版本,继续固定扩展版本,重新构建派生镜像,并让
ASMR_TG_BACKUP_IMAGE 指向新标签。重建服务前,对这个镜像执行相同的
extensions doctor 和 sources validate。
更新 PyPI 安装¶
这套更新会保留现有配置和数据,并根据升级后的可执行文件刷新 systemd unit。先停止应用; 部署使用原生本地 Bot API 时,同时停止该服务。在两个服务都已停止的状态下完成文件系统 级备份:
systemctl --user stop asmr-tg-backup.service
systemctl --user stop asmr-tg-backup-telegram-bot-api.service # 仅本地 Bot API 部署
保持服务停止,升级并完成校验:
pipx upgrade asmr-tg-backup
asmr-tg-backup --version
asmr-tg-backup extensions doctor \
--config ~/.config/asmr-tg-backup/config.toml
asmr-tg-backup sources validate \
--config ~/.config/asmr-tg-backup/config.toml
启动服务前先处理扩展兼容性或来源校验错误。对于受信目录中的扩展,重新运行
extensions enable <slug>,即可安装升级后核心所选择的版本;第三方扩展则在同一个
pipx 环境中按照其安装说明更新。随后重新执行两项校验。
部署使用本地 Bot API 时先启动该服务,再刷新并启动应用服务:
systemctl --user start asmr-tg-backup-telegram-bot-api.service # 仅本地 Bot API 部署
asmr-tg-backup service install
systemctl --user status asmr-tg-backup.service
service install 会重新生成 unit 并启动 worker。
如果执行了数据库结构迁移,请保留对应的 state.db.bak-* 文件,直到确认服务、任务
数量和近期文件均正常。
停止服务¶
SIGTERM 会停止领取新任务,并允许 worker 清空手头工作。直播录制会先中断 ffmpeg, 使当前分段能够完成封装。进程托管程序应在强制终止子进程前提供有限但充足的宽限时间。