Ghostmirror

出自 ArchWiki

GhostMirror 它可以从最新的镜像生成镜像列表,将其与本地镜像进行比较,并指示它们是否已过时、相同或比当前使用的本地镜像更新。
它可以使用 ping 和下载方法执行速度测试。
它可以分析无法工作的镜像以识别潜在问题,此功能对于镜像维护者尤其有用。
它也可以作为 systemd 服务运行,自动确定何时需要重新检查镜像。
Reflector 的主要区别在于,Reflector 使用镜像列表状态来检查每个镜像的状态,特别是 lastsync,并使用 ping 作为速度的度量。
Ghostmirror 不认为 lastsync 可靠,因此它会下载镜像数据库并进行比较,从而显示镜像的实际状态。
对于速度,除了 ping 之外,Ghostmirror 还会下载软件包以检测镜像的实际速度;因此结果更准确。

安装

安装 ghostmirrorAUR 软件包。

用法

要查看所有可用选项,请运行以下命令

$ ghostmirror --help

最佳镜像

如果您的镜像列表已经包含许多您认为有效的镜像,则可以跳过此步骤。
根据我的经验,一个好的数量是 20 多个。随意使用 1 到 100 多个镜像。
您肯定要做的第一件事是搜索可靠的镜像以包含在您的列表中。
为了实现此目标,您需要掌握几个选项。
-Po 显示进度并显示彩色表格。
-c 选择国家/地区,为了找到好的镜像,建议在您自己的国家/地区和邻国/地区内搜索。
您添加的镜像越多,搜索速度可能会越慢,但是此操作无需定期执行,这只是对无数可用镜像的初步筛选。
例如 Italy,Germany,France
-l 您想要保存新镜像列表的路径。
-L 列表中输出镜像的最大数量。
-S 排序模式,我们需要删除错误镜像,为此添加 state 作为第一个排序模式,之后您可以添加 outofdate 在此模式下首先显示镜像同步,还可以添加 morerecent 以确保您永远不会失去同步,最后,您可以添加 ping 以尝试优先考虑最近的镜像。

$ ghostmirror -Po -c Italy,Germany,France -l ./mirrorlist.new -L 30 -S state,outofdate,morerecent,ping

如果没有速度测试,估计字段将不会提供最佳值,但是对于查找稳定的镜像,这不是必需的。
如果操作特别慢,您可以尝试使用 -d 增加同时下载的数量

排序镜像

一旦您拥有一个良好的镜像列表,您就可以执行定期检查以重新组织它,并继续根据您的使用模式使用最佳镜像。
让我们保留先前命令的选项 -Pol
-mu 设置镜像列表路径并仅使用未注释的镜像。
-s 对镜像速度应用测试。
我们需要更改排序方法。虽然我们之前一直在寻找最近的镜像,但现在我们将专注于寻找最稳定和最快的镜像。

$ ghostmirror -Po -mu ./mirrorlist.new -l ./mirrorlist.new -s light -S state,outofdate,morerecent,extimated,speed

现在您可以复制以应用修改到 pacman

# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
# cp ./mirrorlist.new /etc/pacman.d/mirrorlist

自动化

我之前称为“排序镜像”的过程可以使用 systemd 定时器自动完成,具体来说,使用 linger 功能进行自动化。
您无需担心任何事情,因为 linger 将与其配置文件一起自动激活,您只需运行适当的命令即可。

准备

您需要手动创建目录以存放镜像列表的新位置,需要用户无需 root 权限即可编辑的位置

$ mkdir ~/.config/ghostmirror

告知 pacman 您存储镜像列表的位置。
编辑文件 /etc/pacman.conf,搜索并替换此行,并将 <username> 替换为您的用户名。

[core]
Include = /home/<username>/.config/ghostmirror/mirrorlist

[extra]
Include = /home/<username>/.config/ghostmirror/mirrorlist

激活

~/.config/ghostmirror 中以相同的“最佳镜像”模式创建镜像列表,或从 /etc/pacman.d/mirrorlist 简单复制
我们将运行的命令将使用 -D 启用 linger(如果尚未启用),创建新的镜像列表,启动定时器,并使用该命令进行后续自动镜像检查。

$ ghostmirror -DPo -mul ~/.config/ghostmirror/mirrorlist ~/.config/ghostmirror/mirrorlist -s light -S state,outofdate,morerecent,extimated,speed

默认情况下,它使用估计时间的第一个元素来确定服务应再次运行的时间。
您可以选择以 -t hh:mm:ss 格式添加时间,默认为 00:00:00
如果您不想使用估计时间,而是使用固定周期来刷新镜像,则可以使用带有 -f 的固定日期。
在使用这些参数之前,请检查这些值是否正确,方法是

$ systemd-analyze calendar <date to check>

Systemd

可以检查正在运行的定时器

$ systemctl --user list-timers

强制刷新镜像列表

$ systemctl --user start ghostmirror.service

分析器

要分析镜像,只需添加 -i 选项即可检查镜像是否重定向到另一个服务器,验证 URL 是否正确,镜像报告的错误,以及可选的未同步的软件包名称。
例如,仅在特定镜像列表中执行调查

$ ghostmirror -Pomui ./mirrorlist.mantainer all


参见