用于管理自动导出个人数据的工具
export-manager的Python项目详细描述
出口经理
此工具有助于管理个人数据的自动导出/备份(例如,从Todoist或Goodreads等云服务)。在
它可以处理:
- 根据计划运行导出(注意:export_manager本身必须通过cron/launchd/etc等调度程序运行)
- 保持数据和日志井然有序
- 清理旧数据
- 收集指标并生成报告,以帮助您查看备份是否正常工作
术语:
- ^{str}和特定数据包的{/str}和相关数据集的集合
- parcel:一次性导出的数据(例如,您在2020-0215T01:02:03Z检索到的Todoist数据)和相关元数据
入门
- 安装python3和pip
pip install export_manager
- 使用该工具为每个数据集设置目录:
mkdir ~/exports export_manager init ~/exports/todoist export_manager init ~/exports/goodreads # etc. The names can be anything you want, those are just examples.
这将创建如下目录结构: ^{pr2}$ 在 - 编辑每个子目录中的
config.toml
文件,以指定计划和要运行的命令。 例如,如果安装exporteer_todoist,则可以使用以下配置从Todoist导出数据:# Command to invoke. $PARCEL_PATH will be set to ~/exports/todoist/data/DATETIME# $DATASET_PATH is also available and will be set to ~/exports/todoistcmd="TODOIST_API_TOKEN=your_token exporteer_todoist full_sync > $PARCEL_PATH.json"# Only get a new export if the last one is at least 1 day old.interval="1 day"# Only keep the most recent 5 successful exports.# If you don't specify this, export_manager will not delete old exports.keep=5
在 - 运行
export_manager process ~/exports/*
运行所有到期的导出和清理。 设置cron或launchd作业以定期运行此作业。在
指标和报告
你不应该相信你的备份,除非你在测试它们。 测试必须涉及一些手动操作-如果它是完全自动化的,你永远不会知道自动化是否会崩溃。 但理想情况下,您应该自动化收集所有证据以证明备份正在工作的过程,这样您所要做的就是定期查看它并说“是的,看起来不错。”
export_manager提供一个可以生成的报告来帮助您:
export_manager report ~/exports/*
这将:
- 警告您任何明显的问题,例如数据集过期或失败。在
- 告诉您最近成功导出每个数据集的时间。在
- 向您展示每个数据集最近成功包裹的指标,并将其与7天和180天前的数据进行比较。在
默认情况下,度量包括生成地块时的字节数和文件数。在
您还可以为config.toml
文件中的每个数据集定义自定义度量。
例如,对于json数据,可以使用jq来计算json的一些元素。
以下配置将创建一个名为“tasks”的度量,以跟踪上面配置的todoist导出中的任务数:
metrics.tasks.cmd="jq '.items | length' $PARCEL_PATH"
process
命令在每次生成新包时收集所有配置的度量,并将它们存储在metrics.csv
中。在
在Git中跟踪包裹
如果将数据集目录设为git repo,并在config.toml
中设置git = true
,则成功导出的数据文件以及指标.csv文件,将在每次更改后提交。在
直接摄取文件
有些服务很难从自动导出,但确实提供了一种手动导出数据的方法。
导出管理器可以为您跟踪这些手动导出。
为了最小化手动工作量,可以将其配置为自动拉入与特定路径模式匹配的任何文件,这样您只需将手动导出的文件转储到该位置。
例如,如果将以下内容放入config.toml
:
ingest.paths=["/Users/me/Dropbox/*.opml"]
然后,每次运行process
命令时,导出管理器都会检查/Users/me/Dropbox
中带有该后缀的文件。
如果找到了,它将将它们移动到dataset目录中,为它们分配一个包ID,对它们运行度量,等等
(默认情况下,文件的修改时间用作地块ID。
如果您希望使用当前日期/时间作为包裹ID,可以将ingest.time_source = "now"
放在config.toml
中。)
附加文件
命令li上提供了每个命令的帮助ne和在doc folder中。在
您可以以编程方式使用导出管理器。 最重要的模块是export_manager.dataset。在
发展
设置:
- 安装python3和pip
- 克隆回购
- 我建议创建一个venv:
cd export_manager python3 -m venv venv source venv/bin/activate
在 - 安装依赖项:
pip install . pip install -r requirements-dev.txt
在
要运行单元测试:
PYTHONPATH=src pytest
(如图所示重写PYTHONPATH可确保测试针对src/目录中的代码而不是包的已安装副本运行。)
要运行CLI,请执行以下操作:
PYTHONPATH=src python -m export_manager ...
贡献
欢迎在GitHub上的https://github.com/brokensandals/export_manager上报告错误和请求请求。在
许可证
根据MIT License的条款,这是开源的。在
- 项目
标签: