多个 Ubuntu 版本更新同一个 vnstat 数据库

多个 Ubuntu 版本更新同一个 vnstat 数据库

我一直在测试 Ubuntu 16.04 到 18.04 的升级。我上周升级了,今晚重启了 18.04。请注意conky显示差距的方式vnstat

vnstat 18.04 重启.gif

  • “昨天”是空白的,但应该有8.76 GB。
  • “周”显示 7 GB,但今晚启动 18.04 时应该是 32.33 GB + 2.52 GB。
  • “月”显示 45.63 GB,但实际上约为 70 GB

原因是,当我克隆 16.04 来测试分区并升级到 18.04 时,16.04 和 18.04 具有未同步的单独数据库:Bash 脚本将 Ubuntu 克隆到新分区以测试 18.04 LTS 升级

如何让一个分区上的 Ubuntu 16.04 和另一个分区上的 Ubuntu 18.04 都更新同一个vnstat数据库?我想将数据库存储在ntfs已设置的第三个分区(文件系统)上,以共享 Windows Subsystem for Linux (WSL) 数据和 Ubuntu 数据。

奖励:假设我可以在 Windows 中收集每日 RX/TX/Total 统计数据,我该如何将它们填充到数据库中vnstat


编辑1:使用接受的答案 16.04 和 18.04 都vnstat在 ntfs 格式分区中更新 16.04 版本数据文件/mnt/e/var/lib/vnstat/。我不得不回滚 Ubuntu 18.04vnstat版本 1.18 并将其固定到 Ubuntu 16.04 版本 1.13 又名 1.14-1。

下一步是获取 Windows 10西弗吉尼亚海岸“查看”数据并以某种方式显示它。之后西弗吉尼亚海岸在启动时运行vnstatd守护进程并收集/更新网络带宽统计信息。

答案1

vnStat 1.3 - 1.18 版本使用相同的数据库结构,因此只要

  1. 两个安装共享相同的网络接口名称
  2. 在环境之间切换时需要重新启动
  3. 守护进程不会同时访问数据库文件
  4. 数据库文件所有者匹配

正如您遇到的双启动问题一样,假设网络接口名称匹配,这些限制应该不是问题。

需要将数据库目录移动到两个环境都可以访问的位置。在配置文件中,/etc/vnstat.conf要查找的正确关键字是DatabaseDir。对于有问题的 ntfs,您可能还需要禁用UseFileLocking和以避免意外。禁用和CheckDiskSpace也可能会有所帮助。请注意,在启动 vnStat 守护程序之前,挂载需要可用。CreateDirsUpdateFileOwner

编辑配置文件需要重新启动或重新加载守护进程。复制数据库目录时最好保持守护进程停止。更改配置文件后,您还需要将更改同步到两个环境。

奖金

理论上,这是可能的。我认为应该可以让命令vnstat在适用于 Linux 的 Windows 子系统中工作。一旦工作正常,就可以使用该--exportdb功能将数据库内容转储到 ascii 文件中,然后将收集的数据添加到现有数字中(这可能并不完全简单),然后使用它--importdb来导回更改并覆盖现有数据库。

可能更简单的替代方案是在两种环境中使用 vnStat 2.0。这将导致拥有一个包含数据的 sqlite 数据库,并且我假设有可用于操作现有数据的 Windows 工具。此选项需要的步骤较少,但仍需要处理 vnStat 在数据库中存储数据的方式。

相关内容