【发布时间】:2017-06-06 16:14:43
【问题描述】:
它想知道是否可以从任何属性中获取快照的名称。
例如,我创建了一个名为:uuid 的属性,其值为c98fdd32-8a76-4bcf-a509-d298291f85f5
是否可以使用属性及其值获取此快照的名称?
【问题讨论】:
标签: zfs
它想知道是否可以从任何属性中获取快照的名称。
例如,我创建了一个名为:uuid 的属性,其值为c98fdd32-8a76-4bcf-a509-d298291f85f5
是否可以使用属性及其值获取此快照的名称?
【问题讨论】:
标签: zfs
是的,有可能。
使用zfs get -Hpr -t snapshot -o name,value :uuid | awk '{if ($2 == "c98fdd32-8a76-4bcf-a509-d298291f85f5") print $1}'
您可以查询任何数据集(文件系统、卷或快照)的任何 ZFS 属性:
zfs get :uuid <dataset>
如果你在没有数据集的情况下用-r递归调用它,你会得到所有有效的数据集:
zfs get -r :uuid
要将其仅缩减为快照类型的数据集,请使用-t:
zfs get -r -t snapshot :uuid
那么你只能用-o显示你想要的列,在这种情况下是名称和值列:
zfs get -r -t snapshot -o name,value :uuid
要进一步处理数据,您需要删除带有-H 的标题并使用-p 将数字显示为精确值:
zfs get -Hpr -t snapshot -o name,value :uuid
这包括所有值,甚至是未设置的值 (-),因此您需要进一步过滤输出(例如使用 awk):
如果您只想要一个特定的快照名称(打印每一行的第一列/名称,其中第二列/值是特定字符串):
zfs get -Hpr -t snapshot -o name,value :uuid | awk '{if ($2 == "c98fdd32-8a76-4bcf-a509-d298291f85f5") print $1}'
如果您想要除空结果之外的所有结果(全部没有-):
zfs get -Hpr -t snapshot -o name,value :uuid | awk '{if ($2 != "-") print $1}'
如果您只想拥有基本名称,则可以通过@(这是文件系统和快照名称之间的分隔符)进一步拆分第一列和第二列:
zfs get -Hpr -t snapshot -o name,value :uuid | awk '{if ($2 != "-") print $1}' | awk -F"@" '{print $1}'
【讨论】:
zfs get -Hpr -t snapshot -o name,value :uuid | awk '{if ($2 == "c98fdd32-8a76-4bcf-a509-d298291f85f5") print $1}' 我想使用属性的值来获取名称:uuid