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”
目录
- 什么是 Reflector?
- 安装 Reflector
- 基础用法:快速生成优化镜像源
- 3.1 核心参数解析
- 3.2 基础命令示例
- 进阶配置:定制化筛选与排序
- 4.1 多条件组合筛选
- 4.2 基于评分的镜像源优先级
- 4.3 排除与自定义输出
- 自动化:通过 Systemd 定时更新镜像源
- 5.1 自定义 Systemd 服务与定时器
- 5.2 使用官方默认定时器
- troubleshooting:常见问题与解决方案
- 6.1 镜像源未更新或无效
- 6.2 下载速度依然缓慢
- 6.3 Reflector 命令执行失败
- 总结与最佳实践
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 国家代码,如 CN 、 US )。 |
--protocol <协议> | 仅保留支持指定协议的镜像源(如 https 、 http 、 ftp )。 |
--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 提示“无法连接到镜像源”。
排查步骤 :
- 检查 Reflector 命令是否添加
--save /etc/pacman.d/mirrorlist(必须显式指定输出路径)。 - 确认
mirrorlist文件权限:ls -l /etc/pacman.d/mirrorlist,确保 root 可写(权限应为-rw-r--r--)。 - 查看 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 或网络超时。
排查步骤 :
- 检查网络连接:
ping archlinux.org(确保能访问 Arch 官方网站)。 - 简化筛选条件:暂时移除
--country、--protocol等限制,测试基础命令是否工作:reflector --latest 5 --sort rate 仅查看输出,不写入文件 - 检查 API 可用性:直接访问 https://archlinux.org/mirrors/status/json/ ,确认返回 JSON 数据。
7. 总结与最佳实践
Reflector 是 Arch Linux 用户优化镜像源的必备工具,通过合理配置,可显著提升 pacman 下载速度和稳定性。以下是最佳实践总结:
- 定期更新 :通过 Systemd 定时器设置每天或每周自动执行,避免镜像源过时。
- 备份优先 :执行 Reflector 前务必备份
mirrorlist(如cp mirrorlist mirrorlist.bak)。 - 按需筛选 :国内用户建议优先使用
--country China --protocol https --age 24,平衡速度与安全性。 - 控制数量 :
--latest或--fastest建议设置为 5-10 个(过多会增加 pacman 遍历时间)。 - ** verbose 调试**:新手使用时添加
--verbose,便于排查筛选逻辑问题。
掌握 Reflector 后,你将彻底告别手动编辑 mirrorlist 的烦恼,让 Arch Linux 系统始终保持高效更新状态!
参考资料 :