lastlog 命令详解与参数实测(Ubuntu 22.04)

lastlog 命令逐参数实测详解:全表输出与 Never logged in 的真实语义、-u 用户名与 UID 区间查询及重复覆盖陷阱、-t/-b 时间窗过滤、-S/-C 记录置位清除与伪造风险、-R 跨根目录读取、无 --version 与 -f 时的版本确认与快照替代方案、584000 字节稀疏文件仅占 52K 磁盘的原理,全部回显在 Ubuntu 22.04 实测通过。

Linux命令Linux系统UbuntuUbuntu 22.04命令行用户权限2026/10/15

lastlog 命令详解与参数实测(Ubuntu 22.04)

目标:全面掌握 lastlog 的每一个参数——全表输出与字段解读、-u 用户名/UID 区间查询与重复参数覆盖陷阱、-t/-b 时间窗过滤、-S/-C 记录置位与清除、-R 指定根目录读取,以及没有 --version 和 -f 时如何确认版本、如何处理快照文件,顺带讲透 /var/log/lastlog 的稀疏文件特性,全部命令与回显已在 Ubuntu 22.04(shadow 套件 login 1:4.8.1)实测通过。

一、环境信息

本节记录实测环境与数据来源,便于读者对照复现。lastlog 是 shadow 套件的「最近一次登录」查询工具:它读取 /var/log/lastlog,每个用户只保留一条最近一次成功登录的记录(按 UID 定位覆盖写),这与姊妹命令 last 逐条追加 wtmp 流水的思路完全不同。为了给 lastlog 准备真实数据,本机安装并启动了 sshd,创建普通用户后通过 SSH 真实登录,让登录链路自然写入记录。

  • 操作系统:Ubuntu 22.04.5 LTS(x86_64)
  • lastlog 版本:命令本身无 --version/-V(实测见 2.3),二进制归属 login 包(shadow 套件),包版本 login 1:4.8.1-2ubuntu2.2
  • 系统时区:UTC(回显中的时间均为 UTC)
  • 远程接入:openssh-server(sshd 监听 22 端口)
  • 记录文件:/var/log/lastlog(属主 root:utmp,权限 644;逻辑大小 584000 字节、磁盘实际只占 52K——稀疏文件,见 3.9)
  • 测试用户:u4b1(uid=1002)、u4b2(uid=1003)通过 SSH 真实登录产生记录;u4b3 专用于 -S/-C 写操作演示;系统自带账号保持从未登录状态

四个登录记录文件的实测磁盘状态:

$ ls -l /var/log/wtmp /var/log/btmp /var/log/lastlog /run/utmp
-rw-rw-r-- 1 root utmp   1920 Oct 15 09:04 /run/utmp
-rw-rw---- 1 root utmp   1920 Oct 15 09:01 /var/log/btmp
-rw-rw-r-- 1 root utmp 584000 Oct 15 09:04 /var/log/lastlog
-rw-rw-r-- 1 root utmp   6912 Oct 15 08:59 /var/log/wtmp

💡 技术拓展:登录记录「四件套」横向对比——

文件记录内容写入时机对应查看命令
/run/utmp当前在线会话登录写入,登出改写为 DEAD_PROCESS 空壳who、users、w
/var/log/wtmp历史登录/登出流水(追加式)会话开始/结束时各追加一条last
/var/log/btmp失败的登录尝试认证失败时追加lastb
/var/log/lastlog每个用户最近一次成功登录成功登录时按 UID 定位覆盖写lastlog

lastlog 只读 /var/log/lastlog 这一个文件——没有 -f 参数,是四件套查看命令里数据源最「死」的一个(实测见 3.8)。

二、命令概览

2.1 语法与测试数据

lastlog 的语法为:

lastlog [options]

典型的 shadow 风格:只收选项——不接受位置参数过滤,也没有文件参数,数据源固定为 /var/log/lastlog。

测试数据的时间线(便于对照文中各处回显的时间差):

  1. 08:46~08:53 第一轮 SSH 登录,u4b1、u4b2 各留下两次会话(wtmp 流水共 9 条,详见姊妹篇《last 命令详解与参数实测(Ubuntu 22.04)》);
  2. 约 08:55 抓取 lastlog 全表及 -u/-t/-b 等回显——此时 u4b1/u4b2 的 lastlog 记录停留在 08:51 那次会话;
  3. 08:57 第二轮 SSH 登录——发生在全表抓取之后,因此 3.7 的 -R 回显里 u4b1 的记录已更新为 08:57:14,恰好演示了「每用户只保留最近一次」。

2.2 --help 全量输出

以下为 lastlog --help 的完整回显,逐行照抄(空行保留):

$ lastlog --help
Usage: lastlog [options]

Options:
  -b, --before DAYS             print only lastlog records older than DAYS
  -C, --clear                   clear lastlog record of an user (usable only with -u)
  -h, --help                    display this help message and exit
  -R, --root CHROOT_DIR         directory to chroot into
  -S, --set                     set lastlog record to current time (usable only with -u)
  -t, --time DAYS               print only lastlog records more recent than DAYS
  -u, --user LOGIN              print lastlog record of the specified LOGIN


选项分三类:查询过滤(-u 用户/UID、-t 最近 N 天、-b 早于 N 天)、写操作(-S 置位、-C 清除,帮助原文标注 usable only with -u,只能与 -u 搭配)、数据源定位(-R chroot 根目录)。特别注意 -u 的参数虽然写作 LOGIN,实际还接受 UID 与 UID 区间(实测见 3.2)。

2.3 版本信息

lastlog 没有 --version 开关。实测传入会被当作未知选项拒绝,并把 Usage 完整打印一遍:

$ lastlog --version
lastlog: unrecognized option '--version'
Usage: lastlog [options]

Options:
  -b, --before DAYS             print only lastlog records older than DAYS
  -C, --clear                   clear lastlog record of an user (usable only with -u)
  -h, --help                    display this help message and exit
  -R, --root CHROOT_DIR         directory to chroot into
  -S, --set                     set lastlog record to current time (usable only with -u)
  -t, --time DAYS               print only lastlog records more recent than DAYS
  -u, --user LOGIN              print lastlog record of the specified LOGIN


版本信息改走包管理证据链——先定位二进制归属,再查包版本:

$ dpkg -S $(which lastlog)
login: /usr/bin/lastlog
$ dpkg -l login util-linux coreutils 2>/dev/null | grep -E '^ii'
ii  coreutils      8.32-4.1ubuntu1.4  amd64        GNU core utilities
ii  login          1:4.8.1-2ubuntu2.2 amd64        system login tools
ii  util-linux     2.37.2-4ubuntu3.6  amd64        miscellaneous system utilities

关键信息:Ubuntu 22.04 的 lastlog 属于 login 包(shadow 套件)1:4.8.1-2ubuntu2.2——与 last/su(util-linux)、users(coreutils)不同源。shadow 套件的 lastlog 没有 -V 短选项,--version 被按未知选项处理;同门工具(chage、faillog 等)也多为此风格,拿不到版本时走 dpkg -S + dpkg -l 是通用解法。

三、参数逐项实测

3.1 无参数:全表输出与字段解读

不带任何参数执行 lastlog,输出 lastlog 文件中全部用户(含从未登录的)的最近登录状态。实测(抓取时点见 2.1 时间线第 2 步):

$ lastlog
Username         Port     From             Latest
root                                       **Never logged in**
daemon                                     **Never logged in**
bin                                        **Never logged in**
sys                                        **Never logged in**
sync                                       **Never logged in**
games                                      **Never logged in**
man                                        **Never logged in**
lp                                         **Never logged in**
mail                                       **Never logged in**
news                                       **Never logged in**
uucp                                       **Never logged in**
proxy                                      **Never logged in**
www-data                                   **Never logged in**
backup                                     **Never logged in**
list                                       **Never logged in**
irc                                        **Never logged in**
gnats                                      **Never logged in**
nobody                                     **Never logged in**
_apt                                       **Never logged in**
u4d1                                       **Never logged in**
u4d2                                       **Never logged in**
systemd-network                            **Never logged in**
systemd-resolve                            **Never logged in**
messagebus                                 **Never logged in**
systemd-timesync                           **Never logged in**
sshd                                       **Never logged in**
u4b1             pts/6    ::1              Thu Oct 15 08:51:45 +0000 2026
u4b2             pts/5    ::1              Thu Oct 15 08:51:45 +0000 2026
u4a-demo                                   **Never logged in**

输出按 /etc/passwd 中的账号顺序排列(而非登录时间排序)。各列含义:

列示例值含义
Usernameu4b1用户名
Portpts/6最近一次登录的终端(pts/N 为伪终端);-S 手工置位的记录此处显示 lastlog(见 3.6)
From::1登录来源(IPv6 回环地址,即本机连本机)
LatestThu Oct 15 08:51:45 +0000 2026最近一次成功登录时刻,带时区偏移
(无记录时)Never logged inlastlog 文件中没有该用户的记录位

💡 说明:**Never logged in** 的字面语义是「lastlog 文件中没有这个用户的记录」,但不等于「这个用户从未登录过」——三种情形会让它失真:① 记录被 -C 清除(见 3.6);② root 用 -S 伪造/清除过记录;③ UID 复用——lastlog 按 UID 寻址,删除老用户后新建同 UID 的账号会落到原记录位上。审计结论必须与 wtmp 流水(last)交叉验证。

另外注意:系统账号(daemon、sshd 等)全部 Never logged in 属正常现象——它们本就不允许交互登录;若这些账号反而出现了登录记录,才是需要警觉的异常信号。

3.2 -u, --user:指定用户(用户名 / UID / 区间)

-u 后接用户名,只显示该用户的记录:

$ lastlog -u u4b1
Username         Port     From             Latest
u4b1             pts/6    ::1              Thu Oct 15 08:51:45 +0000 2026

-u 的参数不只收用户名,还接受 UID 与 UID 区间(连字符写法),一次性查出 1002~1003 两个账号:

$ lastlog -u 1002-1003
Username         Port     From             Latest
u4b1             pts/6    ::1              Thu Oct 15 08:51:45 +0000 2026
u4b2             pts/5    ::1              Thu Oct 15 08:51:45 +0000 2026

💡 要点:UID 区间是批量巡检的利器——普通用户通常分配在 1000+ 段,lastlog -u 1000-1999 可以一次圈出整段账号的登录状态(本机测试账号 uid 从 1002 起,故以 1002-1003 演示)。

3.3 -u 的重复覆盖陷阱

想一次查两个用户,直觉写法是重复给 -u——实测结果出人意料:只显示了后面的 u4b2,u4b1 被丢弃:

$ lastlog -u u4b1 -u u4b2
Username         Port     From             Latest
u4b2             pts/5    ::1              Thu Oct 15 08:51:45 +0000 2026

这不是 bug:lastlog 内部只保留一个「当前用户/区间」变量,命令行上重复出现的 -u 后者覆盖前者,并不求并集。要查多个用户,正确姿势是用 UID 区间(3.2)或分多次执行。

3.4 -t, --time DAYS:只看最近 N 天内的记录

-t 1 表示只显示「最近 1 天之内有过登录」的用户——从未登录的 Never 用户直接被过滤:

$ lastlog -t 1
Username         Port     From             Latest
u4b1             pts/6    ::1              Thu Oct 15 08:51:45 +0000 2026
u4b2             pts/5    ::1              Thu Oct 15 08:51:45 +0000 2026

💡 要点:-t 是「活跃账号巡检」的第一入口——配合定时任务周期跑 lastlog -t 7,即可拿到周内活跃账号清单;另一头的不活跃盘点交给 -b(3.5)。

3.5 -b, --before DAYS:只看早于 N 天的记录

-b 30 显示「最近一次登录早于 30 天前」的用户。实测输出里 u4b1/u4b2(10 分钟前刚登录)被排除,其余全部命中——从未登录过的用户也一并列出:

$ lastlog -b 30
Username         Port     From             Latest
root                                       **Never logged in**
daemon                                     **Never logged in**
bin                                        **Never logged in**
sys                                        **Never logged in**
sync                                       **Never logged in**
games                                      **Never logged in**
man                                        **Never logged in**
lp                                         **Never logged in**
mail                                       **Never logged in**
news                                       **Never logged in**
uucp                                       **Never logged in**
proxy                                      **Never logged in**
www-data                                   **Never logged in**
backup                                     **Never logged in**
list                                       **Never logged in**
irc                                        **Never logged in**
gnats                                      **Never logged in**
nobody                                     **Never logged in**
_apt                                       **Never logged in**
u4d1                                       **Never logged in**
u4d2                                       **Never logged in**
systemd-network                            **Never logged in**
systemd-resolve                            **Never logged in**
messagebus                                 **Never logged in**
systemd-timesync                           **Never logged in**
sshd                                       **Never logged in**
u4a-demo                                   **Never logged in**

对 Never 用户而言「没有记录」被视作无限久远,因此落入 -b 的筛选范围。-b 30 的输出天然就是一份「30 天不活跃 + 从未登录」账号清单,是清理休眠账号、收缩攻击面的初筛工具;而「最近登录过的」交给 -t,两者正好互补。

3.6 -S / -C:记录置位与清除(写操作)

shadow 的 lastlog 不只是查询工具,还带两个写开关。先准备一个全新测试用户 u4b3(环境准备阶段用 useradd 创建,过程从略),它的记录位为空:

$ lastlog -u u4b3
Username         Port     From             Latest
u4b3                                       **Never logged in**

-S 把该用户的记录置为当前时间,命令静默成功、无任何输出;再查,记录已经出现:

$ lastlog -u u4b3 -S

$ lastlog -u u4b3
Username         Port     From             Latest
u4b3             lastlog  localhost        Thu Oct 15 08:55:02 +0000 2026

注意这条记录的 Port 列显示 lastlog、From 列显示 localhost——它由 lastlog 命令自身写入,并不是任何真实登录会话。-C 再把记录清除,回到 Never 状态:

$ lastlog -u u4b3 -C

$ lastlog -u u4b3
Username         Port     From             Latest
u4b3                                       **Never logged in**

💡 安全提示:帮助原文写明 -S/-C usable only with -u(只能与 -u 搭配),本组实测均按该约定执行。更重要的结论是:root 可以用 -S 随手伪造一条「刚刚登录过」的记录(Port=lastlog 是它的指纹),所以 lastlog 不能单独作为审计证据,务必与 wtmp 流水交叉验证——这层风险在第五节 Q1 再展开。

3.7 -R, --root:指定 chroot 根目录

-R CHROOT_DIR 让 lastlog 去读 <目录>/var/log/lastlog。传 / 即读本机文件,行为与默认完全一致:

$ lastlog -R / -u u4b1
Username         Port     From             Latest
u4b1             pts/7    ::1              Thu Oct 15 08:57:14 +0000 2026

两个信息点:其一,-R / 输出正常,说明该参数只是在文件路径前拼前缀;其二,此刻 u4b1 的记录已从 3.1 全表中的 pts/6 08:51:45 更新为 pts/7 08:57:14——因为 08:57 的第二轮登录发生在全表抓取之后(时间线见 2.1),旧记录被覆盖,正好实证了「每用户只存最近一次」。

💡 技术拓展:-R 的典型用途是离线取证。救援环境或把别的机器的磁盘挂载到本机某目录后,lastlog -R /mnt 即可读取那台机器的最近登录表;这也正是 lastlog 没有 -f 时读「别的文件」的官方替代路径(对照见 3.8)。

3.8 不存在的 -f:快照文件怎么读?

util-linux 系的 last、who 都能用 -f 指定任意记录文件,lastlog 偏偏没有这个参数。实测传入直接被拒:

$ lastlog -f /var/log/lastlog -u u4b2
lastlog: invalid option -- 'f'
Usage: lastlog [options]

Options:
  -b, --before DAYS             print only lastlog records older than DAYS
  -C, --clear                   clear lastlog record of an user (usable only with -u)
  -h, --help                    display this help message and exit
  -R, --root CHROOT_DIR         directory to chroot into
  -S, --set                     set lastlog record to current time (usable only with -u)
  -t, --time DAYS               print only lastlog records more recent than DAYS
  -u, --user LOGIN              print lastlog record of the specified LOGIN


本组实测已按取证习惯预先固化了快照副本:

$ ls -lh /root/demo/lastlog/lastlog-snapshot
-rw-r--r-- 1 root root 571K Oct 15 09:07 /root/demo/lastlog/lastlog-snapshot

但快照放在哪里都读不了——-f 不存在,lastlog 只认运行时根下的 /var/log/lastlog。想读快照只有两条路:

  1. -R 指向快照所在目录树的根:把快照放到 <dir>/var/log/lastlog 的位置,用 lastlog -R <dir> 读取(-R 机制已在 3.7 验证);
  2. 临时替换:在登录写入的静默窗口期,备份原件后把快照拷到 /var/log/lastlog,查完恢复——操作重、有污染在线文件的风险,能走 -R 就别走这条。

💡 要点:对 lastlog 做快照的意义相对有限——它每用户只有一条记录,完整历史本就不在它身上;要保「全过程」,快照对象应该是 wtmp(用 last -f 离线分析,见姊妹篇《last 命令详解与参数实测(Ubuntu 22.04)》4.5 场景)。lastlog 快照主要防的是「审计期间记录被后续登录覆盖」。

3.9 稀疏文件:584000 字节为什么只占 52K?

lastlog 文件的逻辑大小与磁盘占用差距悬殊,三组实测数据放在一起看:

$ wc -c /var/log/lastlog
584000 /var/log/lastlog
$ du -h /var/log/lastlog
52K	/var/log/lastlog
$ ls -l /var/log/lastlog
-rw-r--r-- 1 root utmp 584000 Oct 15 09:04 /var/log/lastlog

原理:lastlog 文件按 UID 直接偏移寻址——每个用户在文件里占一个固定长度的记录槽,槽位由 UID 决定。当系统里存在较大 UID 的账号时(哪怕从未登录),文件的逻辑长度必须覆盖到那个 UID 的偏移;但从未写入过的槽位不分配磁盘块,于是形成「空洞」。逻辑大小(ls、wc -c 看到的)584000 字节,实际磁盘占用(du 看到的)只有 52K,这就是稀疏文件。

💡 技术拓展:同一个文件在不同命令眼里的「大小」——

命令视角实测值含义
ls -l逻辑大小584000文件「应有」的字节数(覆盖到最高 UID 的记录槽)
wc -c逻辑大小584000同上,按字节流计数
du -h磁盘占用52K实际分配的存储块,稀疏「洞」不计入

两个运维影响:① 备份/复制稀疏文件时注意保留空洞语义(如 cp 的 --sparse 选项),否则备份产物会从 52K 膨胀到逻辑大小;② 监控磁盘水位的脚本要用 du 视角,拿逻辑大小算容量会虚报。

四、实战示例

4.1 场景一:账号失陷初查(lastlog + last 交叉)

告警称 u4b1 账号行为异常。第一步看它的「最近一次登录」:

$ lastlog -u u4b1
Username         Port     From             Latest
u4b1             pts/6    ::1              Thu Oct 15 08:51:45 +0000 2026

第二步用 last 拉完整轨迹(-F 取秒级时间、-a 把来源置尾方便提取):

$ last -a -F -n 4 u4b1
u4b1     pts/7        Thu Oct 15 08:57:14 2026 - Thu Oct 15 08:57:20 2026  (00:00)     ::1
u4b1     pts/6        Thu Oct 15 08:57:14 2026 - Thu Oct 15 08:57:20 2026  (00:00)     ::1
u4b1     pts/6        Thu Oct 15 08:51:45 2026 - Thu Oct 15 08:53:50 2026  (00:02)     ::1
u4b1     pts/4        Thu Oct 15 08:46:36 2026 - Thu Oct 15 08:46:36 2026  (00:00)     ::1

wtmp begins Thu Oct 15 08:46:34 2026

两相对照正好暴露两个工具的分工:lastlog 显示的 pts/6 08:51:45 在 last 的轨迹里只是第 3 条——它后面还有 08:57 的两次登录(lastlog 抓取时点早于这两次,见 2.1 时间线)。初查用 lastlog 定位「最近一次」,深查必须落回 last 的流水。

4.2 场景二:UID 段批量巡检

安全基线要求「普通用户段逐一核对最近登录」——UID 区间一次圈定:

$ lastlog -u 1002-1003
Username         Port     From             Latest
u4b1             pts/6    ::1              Thu Oct 15 08:51:45 +0000 2026
u4b2             pts/5    ::1              Thu Oct 15 08:51:45 +0000 2026

生产环境把区间换成 lastlog -u 1000-1999 即可覆盖常规普通用户段;想反向盘点「长期不活跃」,再用 -b(3.5)交叉。

4.3 场景三:休眠与从未登录账号盘点

清理休眠账号的初筛一步到位:lastlog -b 30(完整回显见 3.5)输出的 27 行全部是「30 天内未登录或从未登录」的账号,root 等系统服务账号也在其中。实际执行账号清理时注意两点:系统服务账号(sshd、messagebus 等)本就不该有登录记录,不要把它们当休眠用户删掉;真正要处理的是 1000+ 段里长期不活跃的普通账号,可先禁用(usermod -L 或改 shell 为 nologin)观察一段时间再删除。

4.4 场景四:记录置位/清除演练与伪造风险

按 3.6 的顺序在测试账号上演练即可掌握写操作的手感:lastlog -u u4b3 -S 静默置位 → 查询确认 Port=lastlog、From=localhost 的指纹 → lastlog -u u4b3 -C 清除回 Never(完整回显见 3.6)。生产上的合理用途只有两类:① 测试 lastlog 报表/告警链路时构造数据;② 在安全演练中演示「lastlog 可被 root 伪造」这一风险点,教育团队不要单独采信 lastlog。

4.5 场景五:跨盘取证(-R)

取证机拿到一块服务器的系统盘,挂载后无需启动对方系统即可读其登录表。流程示意如下(其中 -R 的读取行为已在 3.7 实测验证):

mkdir -p /mnt/rescue
mount /dev/sdb2 /mnt/rescue
lastlog -R /mnt/rescue

输出格式与本机一致。对比两条路的成本:-R 只读、零风险,是首选;替换 /var/log/lastlog 的做法留作 -R 不可用时的最后手段(风险评估见 3.8)。

五、注意事项与常见问题

Q1:**Never logged in** 就代表这个用户真的从未登录过吗? 不一定。它只表示「lastlog 文件中没有该用户的记录」,三种情形会让它失真:① root 用 -C 清除过记录(3.6 实测);② root 用 -S 伪造过记录再清除;③ UID 复用——lastlog 按 UID 寻址,删除老用户后新建同 UID 账号会落到原记录位。审计中 lastlog 只能做初筛,结论必须落到 wtmp 流水(last)上交叉验证。

Q2:lastlog 显示的时间为什么和 last 对不上? 两个原因叠加:① lastlog 每用户只保留最近一次,之后每次登录都会覆盖(本组实测:全表时 u4b1 是 08:51:45,第二轮登录后变 08:57:14,见 3.7);② 两个工具的抓取时刻不同。用 last 加用户名过滤拿完整轨迹再下结论(4.1 场景)。

Q3:-u 想同时查两个用户为什么只出来一个? lastlog 内部只保留一个用户/区间过滤变量,重复的 -u 后者覆盖前者(3.3 实测:-u u4b1 -u u4b2 只显示 u4b2)。批量查询用 UID 区间写法 -u 1002-1003。

Q4:为什么 lastlog 既没有 --version 也没有 -f? lastlog 属 shadow 套件(login 包),与 util-linux 系的 last/who 风格不同:无 -V/--version(2.3 实测报 unrecognized option)、无 -f 文件参数(3.8 实测报 invalid option)。版本走 dpkg -S + dpkg -l login;读别的文件走 -R(3.7)或临时替换(3.8)。

Q5:-S/-C 可以不带 -u 吗? 帮助原文明确标注 usable only with -u,只能与 -u 搭配,本组实测均按此约定执行。另外两者执行成功时没有回显(静默成功),脚本里判断成败不要依赖输出,建议结合退出码判断。

Q6:系统账号一片 Never logged in 正常吗? 正常。daemon、sshd、nobody 等服务账号本就不允许交互登录,没有登录记录才是健康状态;反过来,若它们出现登录记录(尤其是 sshd、sync 这类),要立刻警觉并核对 last/wtmp——这往往意味着账号的 shell 被改动或被人利用。

Q7:lastlog 的记录是谁在什么时候写进去的? 成功登录时由登录链路写入:本机 u4b1/u4b2 通过 SSH 登录后,Port/From 立即出现 pts/N 与 ::1(3.1/3.2 回显)。手工置位的记录有指纹——Port 列显示 lastlog、From 列显示 localhost(3.6),据此可以区分自然记录与人为记录。

Q8:/var/log/lastlog 显示 584000 字节,是不是被什么撑爆了? 不是,是稀疏文件(3.9):按 UID 偏移寻址 + 未写入槽位不占磁盘块。逻辑大小与磁盘占用要分开看(ls/wc -c 看到前者,du 看到后者);备份时注意稀疏语义,否则备份产物会膨胀 11 倍以上。

六、参考链接