在静态点上自动安装 USB 密钥?

在静态点上自动安装 USB 密钥?

我想创建一个脚本来为临时工备份数据。他们只需插入一个 USB 密钥,然后单击脚本即可备份数据。

不幸的是,在 Centos 6.6 中自动挂载每次都会更改挂载点,具体取决于 usb 密钥的名称 /media/workkey /media/mykey /media/minikey ....

如何为自动挂载设置静态点?

答案1

1.使USB设备基本名称永久化(例如:Iomega usb设备)

为了避免混淆您的 USB 块设备的基本名称是 /dev/sdb1、/dev/sdd1 还是 /dev/sdXn,我们在您插入时将其永久设置为 /dev/Iomega。这可以借助 udev 设备管理器完成。您应该已经在系统上安装了 udev,否则请使用以下命令安装它:

apt-get 安装 udev

接下来,使用 fdisk 命令搜索外部 USB 磁盘的当前基本名称:

fdisk -l

这将返回如下内容:

输出:磁盘 /dev/sdc:2000.3 GB,2000396746752 字节 255 个磁头,63 个扇区/磁道,243201 个磁柱 单位 = 16065 * 512 = 8225280 字节的磁柱 磁盘标识符:0x001425a0

设备启动开始结束块 ID 系统 /dev/sdc1 1 243201 1953512001 b W95 FAT32

其中,外部 USB 设备的基本名称为 /dev/sdc。接下来,使用 udevinfo 命令并以 /dev/sdc 作为参数来获取模型属性:$ udevinfo -a -p /sys/block/sdc/ | grep model ATTRS{model}=="Ext HDD 1021 "

现在,我们有了模型属性,我们可以通过以下行将其添加到 /etc/udev/rules.d/custom.rules:SUBSYSTEM=="scsi", ATTRS{model}=="Ext HDD 1021 ", SYMLINK+="Iomega%n"

此时我们需要做的就是重新启动 udev 设备管理器:

/etc/init.d/udev 重启

停止热插拔事件调度程序:udevd。启动热插拔事件调度程序:udevd。

插入外部 USB,您的新基本名称为: ls -l /dev/Iomega* lrwxrwxrwx 1 root root 3 2011-02-23 12:36 /dev/Iomega -> sdc lrwxrwxrwx 1 root root 12 2011-02-23 12:36 /dev/Iomega0 -> bsg/14:0:0:0 lrwxrwxrwx 1 root root 4 2011-02-23 12:36 /dev/Iomega1 -> sdc1 lrwxrwxrwx 1 root root 3 2011-02-23 12:36 /dev/Iomega3 -> sg3

请注意 /dev/Iomega1 指向 /dev/sdc1,这正是我们感兴趣的分区,我们接下来使用它来配置 autofs。2.设置 autofs

首先我们需要安装 autofs:

apt-get 安装 autofs

配置 autofs 相当简单。我们需要做的就是编辑两个简单的文件。

让我们从主文件开始,附加以下行:/media//etc/auto.ext-usb --timeout=10,defaults,user,exec,uid=1000

接下来,编辑 /etc/auto.ext-usb 文件,其中包含我们在主配置文件配置中的内容:Iomega -fstype=auto :/dev/Iomega1

重新启动 autofs:

/etc/init.d/autofs restart 3.测试 autofs 配置

我们完成了!现在每次您插入外部 Iomega USB 驱动器时,aufosf 都会将您的设备添加到活动挂载点列表中。现在插入您的外部 USB 驱动器并执行:/etc/init.d/autofs status

输出:

配置的挂载点:

/usr/sbin/automount --timeout=10 /媒体文件 /etc/auto.ext-usb,defaults,user,exec,uid=1000

活动挂载点:

/usr/sbin/automount --pid-file=/var/run/autofs/_media.pid --timeout=10\ /媒体文件/etc/auto.ext-usb,defaults,user,exec,uid=1000

输出:automount(pid7124)在/media 类型 autofs 上(rw,fd=4,pgrp=7124,minproto=2,maxproto=4)

请注意,虽然我们的驱动器现在被列为活动挂载点,但磁盘尚未挂载!autofs 仅等待用户访问指定的挂载点目录,一旦发生这种情况,它就会挂载文件系统。

例如:$ cd /media/ $ ls $ cd Iomega $ ls lost.dir music picture ps3 video mystuff $ cd .. $ ls Iomega

从上面的输出中,您可以看到,只有当我尝试访问 Iomega 目录时,才会创建它。现在,每次插入 USB 外部磁盘时,都可以通过某种桌面或书签快捷方式立即访问它。我希望这有助于创建和运行脚本,因为每次插入时,USB 的名称都会保持不变。

答案2

您可以在此处使用有关添加 udev 规则的部分答案:https://unix.stackexchange.com/questions/74123/what-is-the-service-thats-responsible-for-automounting-a-usb-drive-in-centos-6

  • 将文件添加到/etc/udev/rules.d
  • 根据答案添加行,但将标签参数添加到 pmount 命令,例如:

自动挂载规则

# automounting usb flash drives
# umask is used to allow every user to write on the stick
# we use --sync in order to enable physical removing of mounted memory sticks -- this is OK for fat-based sticks
# I don't automount sda since in my system this is the internal hard drive
# depending on your hardware config, usb sticks might be other devices than sdb*
ACTION=="add",KERNEL=="sdb*", RUN+="/usr/bin/pmount --sync --umask 000 %k usbstick"
ACTION=="remove", KERNEL=="sdb*", RUN+="/usr/bin/pumount %k"
ACTION=="add",KERNEL=="sdc*", RUN+="/usr/bin/pmount --sync --umask 000 %k usbstick"
ACTION=="remove", KERNEL=="sdc*", RUN+="/usr/bin/pumount %k"
  • 重新加载 udev 规则:sudo udevadm control --reload-rules

这将确保每次都把 USB 棒安装在同一个位置。可能还有一种更优雅的方式来编写 udev 规则来检测 USB 棒。

请注意,您还可以让 udev 在挂载后自动启动备份脚本。

相关内容