自动将所有外部驱动器挂载在/ media下,并具有对所有人的读/写权限


9

这是我的问题:

我的计算机有4个USB端口,并且正在运行Ubuntu 12.10。我每天都会收到不同的USB,将其插入计算机,对其进行读/写数据,然后将其发送出去。

我想要的是自动安装我插入计算机的所有USB。检测到的第一个USB将进入/media/HDD1,第二个将进入/media/HDD2等等。或者,如果将/media/HDD1插入端口1的USB插入端口,插入端口2的USB插入端口/media/HDD2,等等,那将是很好的。

路径/media并不重要,但我希望将HDD1-4目录放在一个位置,以便我可以轻松访问它们。

USB通常是ext2,但有时我也可以使用FAT32,NTFS USB。

我还希望在不登录Ubuntu的情况下挂载USB,因为我经常/media/HDD..从另一台Windows计算机上进行访问。

我怎样才能做到这一点?我应该对udev规则进行哪些更改fstab?任何建议都将受到高度赞赏。

Answers:


7

好吧,在这里我们可以使用与fstab光学媒体(即CD和DVD)相同的技巧:

/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

第一列表示文件系统,我敢肯定你的USB的将是固定值,所以让我们假定一切之后sda是USB,因为你只能有4个USB的同时,这样的例子不胜枚举从sdbsdcsddsde

$ 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因此请使用so 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调用时自动挂载,就像启动时一样,防止启动ERRORS和WARNINGS,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设备时,它将自动安装在安装点中,而无需用户干预。您应该根据需要进行修改。


感谢Braiam。我不确定更改fstab是否可以自动挂载USB,而无需重新启动或使用“ mount”命令。我找到了使用autofs的简单解决方案。它不仅可以自动挂载,还支持在无操作的预定时间后自动卸载,这在我的情况下非常有用
Kiwi 2013年

不,不是。正如我在开始时所说的,我使用了fstab用于CD / DVD的相同技巧,不需要使用rootnor mount或nor重新启动。
Braiam

3

这是我找到的解决方案:

首先,我在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安装的一个例外。

当我插入任何驱动器时,它们将在/media/mount目录下显示为disk1,disk2,... ,并在10秒后自动卸载。我无需触摸PC即可从其他地方访问它(例如虚拟机)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.