我需要在特定的已知分区名称之后运行blkid
并复制特定的分区名称。UUID
然后,我需要将其粘贴到现有的配置文件中,替换UUID
它已经存在的配置文件 ( parent_device_uuid
)。下面的示例配置。
任何人都可以用初学者能理解的方式演示如何做到这一点吗?
{
"backup_device_uuid" : "cdb09919-39d4-4a17-9fc4-6daa1d38f1e1",
"parent_device_uuid" : "IOe7Qc-fjAK-2ydl-OMk4-SvVu-1P6Y-PJSHzV",
"do_first_run" : "false",
"btrfs_mode" : "false",
"include_btrfs_home_for_backup" : "false",
"include_btrfs_home_for_restore" : "false",
"stop_cron_emails" : "true",
"btrfs_use_qgroup" : "true",
"schedule_monthly" : "true",
"schedule_weekly" : "true",
"schedule_daily" : "true",
"schedule_hourly" : "true",
"schedule_boot" : "true",
"count_monthly" : "1",
"count_weekly" : "2",
"count_daily" : "3",
"count_hourly" : "3",
"count_boot" : "1",
"snapshot_size" : "15837901165",
"snapshot_count" : "292512",
"date_format" : "%Y-%m-%d %H:%M:%S",
"exclude" : [
"/home/test/**",
"/home/test2/**",
"/root/**"
],
"exclude-apps" : []
}
答案1
鉴于您正在使用json
文件,您可以使用该命令jq
。
为了得到仅有的对于UUID
某些分区,您可以使用以下命令:
将 blkid 与标签名称一起使用
blkid -s UUID -o value -t 'LABEL=your_label_name'
#If you got: 'command not found' then you can use:
sudo blkid -s UUID -o value -t 'LABEL=your_label_name'
#or
/sbin/blkid -s UUID -o value -t 'LABEL=your_label_name'
your_label_name
您想要的设备的名称在哪里。
从blkid --help
:
-s
显示指定的标签(在本例中为 UUID)-o
是输出格式(在本例中我们需要 UUID 标记的值)
使用 lsblk (这不使用标签名称)
lsblk /dev/nvme0n1p1 -o UUID -n
从lsblk --help
:
-o
输出列(在本例中我们只需要 UUID 列)-n
不打印标题
解决方案
最后,jq
您可以parent_device_uuid
使用上面的命令之一替换为您获得的 UUID:
jq --arg puuid "$(blkid -s UUID -o value -t 'LABEL=your_label_name')" '.parent_device_uuid = $puuid' < configfile > tmpconfig
mv tmpconfig configfile
或者,如果您在使用时没有权限mv
(用于移动、重命名文件),则使用:
sudo mv tmpconfig configfile
关于配置文件,这是包含以下内容的文件:
{
"backup_device_uuid" : "cdb09919-39d4-4a17-9fc4-6daa1d38f1e1",
"parent_device_uuid" : "IOe7Qc-fjAK-2ydl-OMk4-SvVu-1P6Y-PJSHzV",
"do_first_run" : "false",
"btrfs_mode" : "false",
"include_btrfs_home_for_backup" : "false",
"include_btrfs_home_for_restore" : "false",
"stop_cron_emails" : "true",
"btrfs_use_qgroup" : "true",
"schedule_monthly" : "true",
"schedule_weekly" : "true",
"schedule_daily" : "true",
"schedule_hourly" : "true",
"schedule_boot" : "true",
"count_monthly" : "1",
"count_weekly" : "2",
"count_daily" : "3",
"count_hourly" : "3",
"count_boot" : "1",
"snapshot_size" : "15837901165",
"snapshot_count" : "292512",
"date_format" : "%Y-%m-%d %H:%M:%S",
"exclude" : [
"/home/test/**",
"/home/test2/**",
"/root/**"
],
"exclude-apps" : []
}
关于jq
参数:--arg puuid "$(blkid -s UUID -o value -t 'LABEL=your_label_name')"
用于将UUID
设备的 分配给变量puuid
。并'.parent_device_uuid = $puuid'
更改"parent_device_uuid" : "IOe7Qc-fjAK-2ydl-OMk4-SvVu-1P6Y-PJSHzV" to what
puuid`(这是设备的 UUID)