title: “Arch Linux Reflector 完全指南:优化你的镜像源列表” source: “https://geek-blogs.com/blog/arch-linux-reflector/" author:

  • geek-blogs” published: 2025-09-29 created: 2026-01-07 description: “Arch Linux 作为一款滚动更新的发行版,其核心优势在于能够快速获取最新的软件包。而这一切的基础,离不开高效、稳定的 镜像源(Mirror)。镜像源是存储 Arch Linux 软件包的服务器,用户通过 /etc/pacman.d/mirrorlist 文件配置 pacman 使用哪些镜像源。然而,随着时间推移,部分镜像源可能会变慢、过时甚至下线,导致 pacman 下载速度下降或更新失败。手动维护镜像源列表不仅繁琐,还难以确保时效性和最优性。这时,Reflector 应运而生。Reflector 是一款由 Arch Linux 官方提供的工具,它能够自动查询 Arch Linux 镜像源状态 API,根据用户需求筛选、排序镜像源,并生成优化后的 mirrorlist。本文将从基础到进阶,详细介绍 Reflector 的使用方法,帮助你彻底掌握镜像源优化技巧。” tags:
  • “clippings”

目录

  1. 什么是 Reflector?
  2. 安装 Reflector
  3. 基础用法:快速生成优化镜像源
    • 3.1 核心参数解析
    • 3.2 基础命令示例
  4. 进阶配置:定制化筛选与排序
    • 4.1 多条件组合筛选
    • 4.2 基于评分的镜像源优先级
    • 4.3 排除与自定义输出
  5. 自动化:通过 Systemd 定时更新镜像源
    • 5.1 自定义 Systemd 服务与定时器
    • 5.2 使用官方默认定时器
  6. troubleshooting:常见问题与解决方案
    • 6.1 镜像源未更新或无效
    • 6.2 下载速度依然缓慢
    • 6.3 Reflector 命令执行失败
  7. 总结与最佳实践

1. 什么是 Reflector?

Reflector 是一款用 Python 编写的命令行工具,其核心功能是 动态生成优化的 Arch Linux 镜像源列表 。它通过查询 Arch Linux 镜像源状态 API 获取实时镜像源数据(包括同步状态、下载速度、地理位置等),然后根据用户指定的条件(如国家、协议、更新时间、速度等)筛选并排序镜像源,最终覆盖或更新 /etc/pacman.d/mirrorlist

Reflector 的核心优势:

  • 自动化 :无需手动查找、测试和编辑 mirrorlist
  • 实时性 :基于官方 API 数据,确保镜像源状态最新。
  • 灵活性 :支持多维度筛选(国家、协议、更新时间等)和排序(速度、评分等)。
  • 轻量高效 :仅依赖 Python 标准库,运行速度快。

2. 安装 Reflector

Reflector 已纳入 Arch Linux 官方仓库,可直接通过 pacman 安装:

sudo pacman -S reflector

安装完成后,可通过以下命令验证版本:

reflector --version

# 输出示例:reflector 2023.08.15

3. 基础用法:快速生成优化镜像源

Reflector 的命令格式为:

reflector [选项] --save /etc/pacman.d/mirrorlist

其中 --save 指定输出文件路径(通常为 /etc/pacman.d/mirrorlist )。以下是最常用的基础参数和示例。

3.1 核心参数解析

参数作用
--verbose显示详细输出(推荐新手使用,便于调试)。
--latest N获取最近同步成功的前 N 个镜像源(N 为整数,如 --latest 10 )。
--fastest N获取速度最快的前 N 个镜像源(基于 API 提供的下载速度数据)。
--country <国家>筛选指定国家/地区的镜像源(支持 ISO 国家代码,如 CNUS )。
--protocol <协议>仅保留支持指定协议的镜像源(如 httpshttpftp )。
--age <小时>仅保留最近 <小时> 内更新过的镜像源(如 --age 24 表示 24 小时内)。
--sort <方式>排序方式: rate (下载速度,默认)、 score (API 评分)、 age (更新时间)。

3.2 基础命令示例

示例 1:获取全球前 10 个最新同步且速度最快的镜像源

sudo reflector --verbose --latest 10 --sort rate --save /etc/pacman.d/mirrorlist
  • --latest 10 :筛选最近同步成功的 10 个镜像源(避免过时镜像)。
  • --sort rate :按下载速度从快到慢排序。
  • --save :覆盖 mirrorlist 文件( 注意:执行前建议备份原文件 )。

示例 2:仅保留中国地区的 HTTPS 镜像源(推荐国内用户)

# 先备份原镜像源

sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

 

# 获取中国地区、24小时内更新、HTTPS协议的前 5 个最快镜像源

sudo reflector --verbose \

  --country China \

  --protocol https \

  --age 24 \

  --fastest 5 \

  --sort rate \

  --save /etc/pacman.d/mirrorlist
  • --country China :仅保留中国地区镜像源(API 中“China”对应代码为 CN ,可混用 --country CN )。
  • --protocol https :强制使用 HTTPS 协议(安全性更高,避免镜像源被篡改)。
  • --age 24 :排除超过 24 小时未更新的镜像源(确保同步时效性)。
  • --fastest 5 :仅保留速度最快的 5 个镜像源(减少 pacman 遍历时间)。

4. 进阶配置:定制化筛选与排序

Reflector 支持更复杂的筛选逻辑,满足个性化需求。以下是进阶场景示例。

4.1 多条件组合筛选

需求 :获取中国和日本地区、支持 HTTP/HTTPS 协议、12 小时内更新、排除特定镜像源,并按速度排序的前 8 个镜像源。

sudo reflector --verbose \

  --country China,Japan \  同时筛选中国和日本

  --protocol http,https \  支持 HTTP 和 HTTPS

  --age 12 \               12 小时内更新

  --exclude "mirror.example.com" \  排除指定域名的镜像源

  --latest 20 \            先取最近同步的 20 个候选

  --fastest 8 \            再从中选最快的 8
  --sort rate \

  --save /etc/pacman.d/mirrorlist
  • --exclude :排除不稳定或速度慢的特定镜像源(支持模糊匹配,如 --exclude "*.edu.cn" 排除教育网镜像)。
  • 多条件组合的逻辑是“与”(AND),即同时满足所有筛选条件。

4.2 基于评分的镜像源优先级

Arch Linux 镜像源状态 API 会为每个镜像源分配一个 评分(Score) ,综合考虑同步延迟、可用性等因素(评分越低越好)。通过 --sort score 可优先选择评分更高的镜像源:

sudo reflector --verbose \

  --country China \

  --protocol https \

  --age 24 \

  --sort score \  按评分排序(而非速度)

  --latest 10 \

  --save /etc/pacman.d/mirrorlist

适合对稳定性要求高于速度的场景(如服务器环境)。

4.3 排除与自定义输出

排除低带宽镜像源

通过 --download-timeout--connection-timeout 调整超时时间,过滤响应慢的镜像源:

sudo reflector --verbose \

  --country China \

  --protocol https \

  --age 24 \

  --download-timeout 5 \  下载测试超时(秒)

  --connection-timeout 2 \  连接超时(秒)

  --sort rate \

  --save /etc/pacman.d/mirrorlist

自定义输出格式(进阶)

默认输出格式已满足 mirrorlist 要求,但若需调试或自定义,可使用 --format

# 输出镜像源 URL、国家、速度(仅用于查看,不写入 mirrorlist)

reflector --country China --protocol https --format "{url}  {country} {rate} MB/s"

5. 自动化:通过 Systemd 定时更新镜像源

手动执行 Reflector 命令虽有效,但难以保证及时性。通过 Systemd 服务与定时器,可实现周期性自动更新镜像源(如每天凌晨更新)。

5.1 自定义 Systemd 服务与定时器

步骤 1:创建 Systemd 服务文件

创建 /etc/systemd/system/reflector.service ,内容如下(根据需求修改 ExecStart 命令):

[Unit]

Description=Update Arch Linux mirrorlist with Reflector

Documentation=https://wiki.archlinux.org/title/Reflector

 

[Service]

Type=oneshot

# 核心命令:与手动执行的 Reflector 命令一致

ExecStart=/usr/bin/reflector --verbose --country China --protocol https --age 24 --fastest 8 --sort rate --save /etc/pacman.d/mirrorlist

# 执行前备份原 mirrorlist(可选但推荐)

ExecStartPre=/bin/cp -f /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

步骤 2:创建定时器文件

创建 /etc/systemd/system/reflector.timer ,定义执行周期(如每天凌晨 3 点):

[Unit]

Description=Daily update of Arch Linux mirrorlist with Reflector

 

[Timer]

# 每天 3:00 执行

OnCalendar=*-*-* 03:00:00

# 开机后 5 分钟执行一次(首次初始化)

OnBootSec=5min

Persistent=true  若系统关机时错过执行,开机后补执行

 

[Install]

WantedBy=timers.target

步骤 3:启用并启动定时器

# 重新加载 Systemd 配置

sudo systemctl daemon-reload

 

# 启用定时器(开机自启)

sudo systemctl enable reflector.timer

 

# 启动定时器

sudo systemctl start reflector.timer

 

# 查看定时器状态

systemctl list-timers | grep reflector

5.2 使用官方默认定时器

Reflector 安装后会自带一个默认的 reflector.timer (位于 /usr/lib/systemd/system/ ),但其默认配置可能不符合需求(如未指定国家、协议等)。若需使用官方定时器,需先修改配置文件:

# 编辑默认配置(根据需要调整参数)

sudo nano /etc/xdg/reflector/reflector.conf

配置文件示例(按需修改):

# /etc/xdg/reflector/reflector.conf

--country China

--protocol https

--age 24

--fastest 10

--sort rate

--save /etc/pacman.d/mirrorlist

然后启用官方定时器:

sudo systemctl enable --now reflector.timer

6. Troubleshooting:常见问题与解决方案

6.1 镜像源未更新或无效

现象 :执行 Reflector 后, mirrorlist 内容未变化,或 pacman 提示“无法连接到镜像源”。
排查步骤

  1. 检查 Reflector 命令是否添加 --save /etc/pacman.d/mirrorlist (必须显式指定输出路径)。
  2. 确认 mirrorlist 文件权限: ls -l /etc/pacman.d/mirrorlist ,确保 root 可写(权限应为 -rw-r--r-- )。
  3. 查看 Reflector 执行日志: sudo reflector --verbose ...(添加 --verbose 显示详细过程,排查筛选条件是否过严导致无结果)。

6.2 下载速度依然缓慢

可能原因

  • 筛选条件过宽松(如 --latest 50 导致 pacman 遍历过多镜像源)。
  • --age 过大(如 --age 168 包含 7 天前的过时镜像)。
  • 本地网络问题(可尝试更换 --country 为邻近地区,如中国用户添加 --country Japan,Korea )。

解决方案

# 缩小筛选范围,仅保留最近 6 小时更新、最快的 5 个镜像源

sudo reflector --verbose --country China --protocol https --age 6 --fastest 5 --sort rate --save /etc/pacman.d/mirrorlist

6.3 Reflector 命令执行失败

错误示例error: no mirrors found 或网络超时。
排查步骤

  1. 检查网络连接: ping archlinux.org (确保能访问 Arch 官方网站)。
  2. 简化筛选条件:暂时移除 --country--protocol 等限制,测试基础命令是否工作:
    reflector --latest 5 --sort rate  仅查看输出,不写入文件
    
  3. 检查 API 可用性:直接访问 https://archlinux.org/mirrors/status/json/ ,确认返回 JSON 数据。

7. 总结与最佳实践

Reflector 是 Arch Linux 用户优化镜像源的必备工具,通过合理配置,可显著提升 pacman 下载速度和稳定性。以下是最佳实践总结:

  1. 定期更新 :通过 Systemd 定时器设置每天或每周自动执行,避免镜像源过时。
  2. 备份优先 :执行 Reflector 前务必备份 mirrorlist (如 cp mirrorlist mirrorlist.bak )。
  3. 按需筛选 :国内用户建议优先使用 --country China --protocol https --age 24 ,平衡速度与安全性。
  4. 控制数量--latest--fastest 建议设置为 5-10 个(过多会增加 pacman 遍历时间)。
  5. ** verbose 调试**:新手使用时添加 --verbose ,便于排查筛选逻辑问题。

掌握 Reflector 后,你将彻底告别手动编辑 mirrorlist 的烦恼,让 Arch Linux 系统始终保持高效更新状态!

参考资料