它想知道是否有可能從任何屬性獲取快照的名稱。使用zfs獲取屬性快照的名稱獲取
例如,我創建了一個名爲:uuid
與價值c98fdd32-8a76-4bcf-a509-d298291f85f5
如果有可能得到使用屬性,其價值本快照的名稱屬性?
它想知道是否有可能從任何屬性獲取快照的名稱。使用zfs獲取屬性快照的名稱獲取
例如,我創建了一個名爲:uuid
與價值c98fdd32-8a76-4bcf-a509-d298291f85f5
如果有可能得到使用屬性,其價值本快照的名稱屬性?
是的,這是可能的。
使用zfs get -Hpr -t snapshot -o name,value :uuid | awk '{if ($2 == "c98fdd32-8a76-4bcf-a509-d298291f85f5") print $1}'
可以查詢任何數據集的任何ZFS屬性(文件系統,卷或快照):
zfs get :uuid <dataset>
如果用遞歸調用它,沒有一個數據集,你會得到所有有效數據集:
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 – icarbajo
@icvallejo很高興幫助。我瞭解你,但我的解決方案缺乏(我忘了你想過濾一個具體的價值,並沒有再讀你的問題),對此抱歉。我會將你的評論添加到答案中。感謝接受! – user121391
這是今天正確的方式,但是FYI還有一個名爲「頻道節目」的新功能(https://www.slideshare.net/mobile/MatthewAhrens/openzfs-channel-programs),它將允許你可以在單個原子操作中執行此操作。 – Dan