[英]How do I write a script to identify and manipulate a specific drive in the terminal?
我正在尝试编写一个简短的脚本,该脚本可以自动卸载和重新安装分区,而无需知道驱动器当前安装在哪里。
以下命令对我有用:
sudo umount /dev/sdX
sudo mount -t ntfs /dev/sdX /mnt/rec
问题是,我正在实时运行Linux,无法将其安装在硬盘上。 这样,每当我重新启动计算机时,/ dev / sdX有时会挂载为/ dev / sdb或/ dev / sdd。 因此,我不能只运行脚本来自动将驱动器挂载到需要的位置,而无需使用
sudo fdisk -l
为了验证当前安装的驱动器是什么。
我的问题是:是否有一种方法可以识别与当前安装位置无关的驱动器?
是!
直到2005年左右,这一直是一个令人烦恼的问题,但是由于使用了udev
,现在可以访问基于独立于设备的标识符的设备。
请查看/dev/disk/
以了解独立于/dev/sd*
名称而自动对分区进行各种分类的所有方式:
$ find /dev/disk/
/dev/disk/by-uuid
/dev/disk/by-uuid/d7a395e4-e6fd-49bc-bbd9-af9c6a43211d
/dev/disk/by-partuuid
/dev/disk/by-partuuid/4434a42f-01
/dev/disk/by-path
/dev/disk/by-path/acpi-VMBUS:01-scsi-0:0:0:0-part1
/dev/disk/by-path/acpi-VMBUS:01-scsi-0:0:0:0
/dev/disk/by-path/pci-0000:00:07.1-ata-2
/dev/disk/by-id
/dev/disk/by-id/wwn-0x600224805c60e27d40a2d50b3961022c-part1
/dev/disk/by-id/scsi-3600224805c60e27d40a2d50b3961022c-part1
/dev/disk/by-id/wwn-0x600224805c60e27d40a2d50b3961022c
/dev/disk/by-id/scsi-3600224805c60e27d40a2d50b3961022c
/dev/disk/by-id/ata-Virtual_CD
这些都是到其支持设备的完全透明的符号链接,因此您可以轻松地看到它们对应的含义:
$ ls -l /dev/disk/by-uuid/d7a395e4-e6fd-49bc-bbd9-af9c6a43211d
lrwxrwxrwx 1 root root 10 May 28 10:38 /dev/disk/by-uuid/d7a395[..] -> ../../sda1
通常, by-uuid
条目是您最好的选择,但是partuuid
和label
对于较少的Linux-y文件系统也可能有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.