我正在使用带有 snapper 和 BTRFS 的 Arch Linux。
我正在编写一个供个人使用的脚本,以简化通过 snapper 快照恢复系统的过程。显然应该启动到 live USB 并首先将顶级子卷挂载到 /mnt。
我按照 ArchWiki 的步骤列出了快照程序创建的所有快照,但我想同时显示日期和描述。我觉得我可能需要回滚到我只能通过描述而不是日期来识别的特定快照。
Wiki 建议运行:
grep -r '<date>' /mnt/@snapshots/*/info.xml
有没有一种方法可以像在正在运行的系统上运行 snapper ls 一样,将日期和描述显示在一行中。
我想输出应该类似于下面的内容
/mnt/@snapshots/21/info.xml: <date>2021-07-20 22:00:00</date <description>pacman -Syu</description>
/mnt/@snapshots/24/info.xml: <date>2021-07-22 22:00:00</date> <description>pacman -S tree</description>
/mnt/@snapshots/25/info.xml: <date>2021-07-23 22:00:00</date> <description>binutils boost-libs breezy clucene cmake copyq exiv2 gedit gnome-desktop</description>
/mnt/@snapshots/26/info.xml: <date>2021-07-24 22:00:00</date> <description>google-chrome</description>
由于您正在处理 xml 文件,因此您应该使用像xmlstarlet这样的 xml 解析器。考虑这个 xml 文件:
此示例将从快照中提取描述:
更改
--value-of
条目以获取其他值。例如,要获取日期,请使用--value-of /snapshot/date
. 现在您可以为结果分配变量并根据需要显示它们。现在,由于
xmlstarlet
在标准 Arch ISO 上不可用,我将展示一个示例grep
(注意:这需要在根目录下运行):示例输出: