这是我的问题:
我的电脑有 4 个 USB 端口,运行的是 Ubuntu 12.10。我每天都会收到不同的 USB,插入我的电脑,读/写数据,然后把他们送走。
我想要的是自动挂载我插入计算机的任何 USB。检测到的第一个 USB 将转到/media/HDD1
,第二个将转到 ,依此类推。或者如果插入端口 1 的 USB 将转到,插入端口 2 的 USB 将转到,依此类推,/media/HDD2
那就太好了。/media/HDD1
/media/HDD2
路径/media
并不重要,但我希望将 HDD1-4 目录放在一个地方,以便我可以轻松访问它们。
USB 通常是 ext2,但有时我也会得到 FAT32、NTFS USB。
我还希望无需登录 Ubuntu 即可安装 USB,因为我经常/media/HDD..
从另一台 Windows 计算机访问。
我该怎么做?我应该对udev
规则fstab
做出哪些改变?任何建议都非常感谢。
答案1
fstab
好吧,这里我们可以使用与光学媒体(又名 CD 和 DVD)相同的技巧:
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
第一列表示文件系统,我相信你的 USB 会有固定值,因此我们假设之后的所有内容sda
都是 USB,并且由于你只能同时拥有 4 个 USB,因此列表从、、sdb
和开始。sdc
sdd
sde
$ ls /dev/sd*
/dev/sda /dev/sdb /dev/sdb3 /dev/sdb6 /dev/sdc /dev/sdf
/dev/sda1 /dev/sdb1 /dev/sdb4 /dev/sdb7 /dev/sdd
/dev/sda2 /dev/sdb2 /dev/sdb5 /dev/sdb8 /dev/sde
(就我而言,我使用内存读取器,因此我的 USB 驱动程序从开始,sdg
但让我们继续。)
现在我们假设每个 USB 都有一个且只有一个一分区,因此我们需要的行fstab
是:
/dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1
然后你说你的挂载点必须修复,所以在你创建目录后,让我们添加它们:
/dev/sdb1 /media/HDD1
/dev/sdc1 /media/HDD2
/dev/sdd1 /media/HDD3
/dev/sde1 /media/HDD4
由于您可以拥有几乎所有类型的文件系统,auto
因此让我们使用 fstab 猜测要使用的文件类型:
/dev/sdb1 /media/HDD1 auto
/dev/sdc1 /media/HDD2 auto
/dev/sdd1 /media/HDD3 auto
/dev/sde1 /media/HDD4 auto
好的,现在让我们归结为选项,这些选项对于 CD 来说是完全相同的,但具有读/写权限:
/dev/sdb1 /media/HDD1 auto rw,users,noauto,allow_other,umask=0
/dev/sdc1 /media/HDD2 auto rw,users,noauto,allow_other,umask=0
/dev/sde1 /media/HDD3 auto rw,users,noauto,allow_other,umask=0
/dev/sde1 /media/HDD4 auto rw,users,noauto,allow_other,umask=0
rw
告诉我们我们需要读写权限,users
允许任何用户安装设备,noauto
防止驱动程序在mount -a
被调用时自动安装,就像在启动时一样,防止启动错误和警告,allow_other
允许安装驱动程序的用户以外的其他人拥有相同的权限,并umask=0
防止应用默认的 umask。
现在只剩下两个字段,即顺序dump
和fsck
顺序,这两个字段都可以是0
,最后的结果如下:
/dev/sdb1 /media/HDD1 auto rw,user,noauto,allow_other 0 0
/dev/sdc1 /media/HDD2 auto rw,user,noauto,allow_other 0 0
/dev/sdd1 /media/HDD3 auto rw,user,noauto,allow_other 0 0
/dev/sde1 /media/HDD4 auto rw,user,noauto,allow_other 0 0
这样,每次插入 USB 设备时,它都会自动挂载到挂载点,无需用户干预。你应该根据需要进行修改。
答案2
以下是我找到的解决方案:
首先,我在我的 Linux PC 上安装 autofs:
sudo apt-get install autofs
它将在下方创建 auto.master 文件/etc/auto.master
在该文件末尾添加以下行:
/media/mount /etc/auto.mount --timeout=10 --ghost
/media/mount
是我想要将所有外部驱动器挂载到的目录。/etc/auto.mount
是放入挂载规则的文件。--timeout=10
表示驱动器在 10 秒不活动后会自动卸载。--ghost
表示卸载后仍会留下内容图片。根据您的需要更改此行。
编辑/etc/auto.mount
文件并添加以下行:
disk1 -fstype=auto,sync :/dev/sdc1
disk2 -fstype=auto,sync :/dev/sdd1
disk3 -fstype=auto,sync :/dev/sde1
disk4 -fstype=auto,sync :/dev/sdf1
disk5 -fstype=auto,sync :/dev/sdg1
disk6 -fstype=auto,sync :/dev/sdh1
disk7 -fstype=auto,sync :/dev/sdi1
disk8 -fstype=auto,sync :/dev/sdj1
DVD -fstype=iso9660,ro :/dev/sr0
对于普通驱动器(例如 USB 或 eSATA 集)-fstype=auto,sync
。我有 8 个 USB+eSATA 端口,因此我在此声明 8 个挂载点。我的 PC 已经有sda
和sdb
作为本地磁盘,因此我将sdc1
->sdj1
用于外部设备。当您插入驱动器时,它们实际上是设备节点/dev
。挂载规则的一个例外是 DVD 挂载,如上所示。
当我插入任何驱动器时,它们都会在目录下显示为 disk1、disk2、... /media/mount
,并将在 10 秒后自动卸载。我不需要触摸我的电脑,可以从其他地方访问它(例如虚拟机)