Linux RedHat CentOS 操作系统加载挂载U盘、USB移动硬盘方法

插上USB存储设备后,先用 fdisk -l 或 parted -l 命令来查询操作系统检测到的磁盘详细列表,

找到插入的设备在系统的代号,如sda1, sda2, sdb1, sd2……然后继续操作如下。


挂载U盘设定字符集,保证能够正常显示中文

1、使用命令:fdisk -l,查看系统硬盘和分区情况

2、插入优盘,再次用fdisk -l命令查看
   
    大家可以发现多了一个硬盘/dev/sdb和它的一个分区/dev/sdb1
 
3、使用命令:mkdir -p /mnt/usb,在mnt目录下创建目录usb来作挂接点
 
4、进行挂载,使用命令:mount -o iocharset=cp936 /dev/sdb1 /mnt/usb
     
    其中,-o iocharset是设定字符集,保证能够正常显示中文
 
5、已成功挂载,可以使用命令:ls /mnt/usb进行查看。挂载移动硬盘和优盘完全一样
 
6、解除挂载,目的是避免损坏或丢失数据,使用命令:umount /dev/sdb1


关于mount中文显示乱码的问题

当我用命令

mount -t vfat /dev/hda7 /mnt/fat 时候,里面出现乱码,经上网查证,这是因为字符集的问题,解决方法:
mount -t vfat -o iocharset=gb2312  或者
mount -t vfat -o iocharset=cp936 或者
mount -t vfat -o iocharset=utf8
经测试 发现 在前两个(gb2312和cp936)下,中文还是乱码,但utf8则显示正常,

用locale -a 看了一下本地字符集,没有发现gb2312和cp936


挂载U盘(指定U盘文件系统格式fat32格式)

1,以root用户登陆

   先加载USB模块 modprobe usb-storage
   用fdisk -l 看看U盘的设备
   假如U盘是sda1

2,确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令:mkdir /mnt/usb_disk,成功后进行下一步。    

3,载入 u 盘,需键入以下命令:mount  /dev/sda   /mnt/usb_disk     

针对普通U盘(一般是fat32格式)来讲,挂载方法很简单将U盘挂载到根目录下的mnt文件夹中命令为:

mount -t vfat /dev/sdb1 /mnt    //指定U盘文件系统格式
     成功后,即可使用 u 盘了, 文件就在目录 /mnt/usb 下。

4,卸载u盘:在使用完u盘后,在拔出前需要先键入卸载U盘命令    
     命令如下:umount /mnt/usb 


大容量U盘(exfat)

安装fuse-exfat

由于CentOS没有默认支持exfat格式,因此需要添加fuse-exfat。

  1. 安装fuse-exfat

    可以直接从googlecode上下载安装

 yum install subversion scons fuse-devel gcc
 wget https://exfat.googlecode.com/files/fuse-exfat-1.0.1.tar.gz
 wget https://exfat.googlecode.com/files/exfat-utils-1.0.1.tar.gz

 tar -zxvf fuse-exfat-1.0.1.tar.gz -C /mnt/
 tar -zxvf exfat-utils-1.0.1.tar.gz -C /mnt/

cd /mnt/fuse-exfat-1.0.1/
scons
scons install

cd /mnt/exfat-utils-1.0.1/
scons
scons install

还可以直接下载rpm包进行安装

1. wget http://download1.rpmfusion.org/free/el/updates/6/x86_64/exfat-utils-1.0.1-1.el6.x86_64.rpm
2. wget http://download1.rpmfusion.org/free/el/updates/6/x86_64/exfat-utils-1.0.1-2.el6.x86_64.rpm

这两个里面,“1”是初始包(Initial package),“2”是适合redhat的包(Fix path on RHEL),只用第一个就可以了。

wget http://download1.rpmfusion.org/free/el/updates/6/x86_64/fuse-exfat-1.0.1-1.el6.x86_64.rpm

这里与上一个相似,都是两个(一个Initial package,另一个Fix path on RHEL),还是用“1”就可以。 
rpm的安装指令常用的几个是

 -i 安装
 -v 显示信息
 -h 显示进度
 -u 升级
 -e 移除
 -q 查看已安装的软件信息
 更多详细指令自行--help

一般常用的方法是rpm -ivh xxx.rpm 


2. 挂载

有了fuse-exfat后就可以挂载了,挂载命令为

 mount.exfat /dev/sdb1 /mnt

或者

 mount exfat -t /dev/sdb1 /mnt

(其实都类似) 


3. 卸载

卸载的方法是统一的

umount /dev/sdb1

如果要挂载的U盘是NTFS格式呢?首先要安装ntfs-3g

yum install ntfs-3g

之后就可以正常挂载了

mount -t ntfs-3g /dev/sdb1 /mnt

linux系统下如何挂载NTFS移动硬盘

用命令行挂载移动硬盘是Linux的基本操作之一,虽然目前有些Linux系统能自动加载移动硬盘,但有些时候(比如使用Ubuntu Server或其它Linux系统的时候)仍然需要手动操作,下面这篇文章主要介绍了linux系统下如何挂载NTFS移动硬盘,需要的朋友可以参考借鉴。


前言

数据迁移是我们经常会遇到的,有时候做大数据量迁移时,为了快速迁移大数据,有可能在Linux服务器上临时挂载NTFS格式的移动硬盘, 一般情况下,Linux是识别不了NTFS格式移动硬盘的(需要重编译Linux核心才能,加挂NTFS分区),
这时候为了能让Linux服务器能够识别NTFS的移动硬盘,就必须安装ntfs-3g(Third Generation Read/Write NTFS Driver)的包。

一、NTFS-3G介绍

  • NTFS-3G是一个开源项目,
  • NTFS-3G是为Linux, Android, Mac OS X, FreeBSD, NetBSD, OpenSolaris, QNX, Haiku,
  • 和其他操作系统提供的一个稳定的,功能齐全,读写NTFS的驱动程序的。
  • 它提供了安全处理Windows XP,Windows Server 2003,Windows 2000,Windows Vista,Windows Server 2008和Windows 7操作系统下的NTFS文件系统。
  • NTFS-3g是一个开源软件,它支持在Linux下面读写NTFS格式的分区。
  • 它非常的快速,同时也很安全。它支持Windows 2000、XP、2003和Vista,并且支持所有的符合POSIX标准的磁盘操作。 
  • ntfs-3g的目的是为了持续的发展,各硬件平台和操作系统的用户需要可靠的互通与支持ntfs的驱动,
  • ntfs-3g可以提供可信任的、功能丰富的高性能解决方案。经过了12年多的发展,ntfs-3g已经逐渐稳定; 

资料介绍

  • 官方网址:http://www.tuxera.com/,
  • 文档手册:http://www.tuxera.com/community/ntfs-3g-manual/
  • 下载地址:http://www.tuxera.com/community/ntfs-3g-download/

二、安装与挂载

步骤一:解压安装NTFS-3G。

?
1
2
3
4
5
# tar -xvzf ntfs-3g_ntfsprogs-2012.1.15.tgz 
# cd ntfs-3g_ntfsprogs-2012.1.15 
# ./configure 
# make 
# make install

之后系统会提示安装成功,下面就可以用ntfs-3g来实现对NTFS分区的读写了

步骤二:配置挂载NTFS格式的移动硬盘

1. 首先得到NTFS分区的信息 

?
1
2
3
# sudo fdisk -l | grep NTFS 
[root@DB-Server klb] # sudo fdisk -l | grep NTFS 
/dev/sdc1 * 1 244 1955776+ 7 HPFS /NTFS

2. 设置挂载点,用如下命令实现挂载

?
1
# mount -t ntfs-3g

例如得到的NTFS分区信息为/dev/sdc1,挂载点设置在/mnt/usb下,可以用 

?
1
2
3
# mount -t ntfs-3g /dev/sdc1 /mnt/usb 
  或者直接用 
# ntfs-3g ntfs-3g /dev/sdc1 /mnt/usb

3. 如果想实现开机自动挂载,可以在/etc/fstab里面添加如下格式语句

?
1
ntfs-3g silent, umask =0,locale=zh_CN.utf8 0 0

这样可以实现NTFS分区里中文文件名的显示。 

4. 卸载分区可以用umount实现,用

?
1
2
3
# umount    
或者    
# umount

总结

以上就是关于linux系统挂载NTFS移动硬盘的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

        

        还有一种修改内核后直接可以操作NTFS格式的方法,由于NTFS这个格式对U盘不好,所以比较适合移动硬盘,如果想要挂载双系统中windows里的硬盘可以参考这个方法,接着介绍:


  • 创建文件夹usb:

命令:mkdir /mnt/usb

  • 命令行挂载U盘:
    •  步骤一:插U

命令:cat /proc/partitions

插u盘之前,上述命令cat /proc/partitions,观察现在系统的分区情况;插上u盘后,再次运行上述命令,查看多出来的分区(通常是sda1)。

    • l  步骤二:查看输出结果

命令:fdisk -l /dev/sda

例如:

     # fdisk -l /dev/sda

     Disk /dev/sda: 131 MB, 131104768 bytes

     3 heads, 32 sectors/track, 2667 cylinders

     Units = cylinders of 96 * 512 = 49152 bytes 

Device

Boot

Start

End

Blocks

Id

System

/dev/sdb1

*

1

2668

128016

6

FAT16

 

    • l  步骤三:挂载U

命令

mount -t msdos /dev/sdb1 /mnt/usb

fat16 

mount -t msdos /dev/sdb1 /mnt/usb

fat32

mount -t vfat /dev/sdb1 /mnt/usb

ext2格式:

mount -t ext2 /dev/sda1 /mnt/usb

通过观察上面的输出结果得知U盘所在的设备以及类型(即FAT16),例如我的:/dev/sdb1。

接下来进行挂载操作,假设我们需要将U盘挂载到/mnt/usb目录(PS:没有该目录,使用命令:mkdir /mnt/usb,创建usb文件夹),挂载命令如上

加挂各文件系统详解:

  • 1.FAT32文件系统

自动识别分区的文件系统类型,命令如:mount /dev/hda6 /mnt/d

dev/hda6是笔者Windows的D盘,/mnt/d是目录加挂点。Linux会自动识别到/dev/hda6分区的文件系统类型是什么,然后加挂。

指定分区的文件系统类型,命令如:mount -t vfat /dev/hda6 /mnt/d

PS在实际操作中,直接加挂一个windows的分区,文件名和目录名如果为中文,则会出现乱码的现象,为了避免这种情况可以指定字符集,命令如下

mount /dev/hda6 /mnt/d -o codepage=936,iocharset=cp936

mount -t vfat /dev/hda6 /mnt/d -ocodepage=936,iocharset=cp936

注意:cp936是指简体中文,cp950是指繁体中文。

  • 2.NTFS文件系统

在目前多数的Linux版本上,需要重编译Linux核心才能,加挂NTFS分区(编译方法请参阅其它文章)。核心支持NTFS后,可以使用以下命令加挂

mount -t ntfs /dev/hda2 /mnt/c

PS对于中文的文件名和目录名仍然会出现乱码的问题,可以指定字符集,不过和加挂vfat分区不同,为了避免这种情况可以指定字符集,命令如下

mount -t ntfs -o iocharset=cp936 /dev/hda2 /mnt/c –r

mount -t ntfs -o iocharset=cp936,rw /dev/hda2 /mnt/c

  • 3.加挂U盘上的文件系统

Linux对USB设备有很好的支持,插入U盘之后,U盘被识别为一个SCSI盘,通常您用以下命令就能加挂U盘上的文件系统,命令如下

mount /dev/sda1 /usb

PS对于乱码现象,解决方式同上,命令类似FAT32的,命令如下

mount /dev/sda1 /usb -o pagecode=936,iocharset=cp936

  • 4.加挂Linux系统通过samba共享的目录

利用samba共享的目录其实很难分清楚其原来是哪种文件系统,不过这一点并不重要,只要它对用户是透明的就好啦。加挂时,我们指定其类型为smbfs。命令如下

PS对于乱码现象,解决方式同上,命令类似FAT32的,命令如下:

 mount -t smbfs –o

username=terry,password=terry,codepage=936,iocharset=cp936

//terry-linux/terry /mp3/

mount -t smbfs –o

username=terry,password=terry,codepage=936,iocharset=cp936

//192.168.100.228/terry /mp3/

注意:你可以不直接写password=terry这个参数,系统界时会要你输入密码,这样就可以防止有人直接看到你的密码。视具体情况而定,-o后面的参数可以对应增减。

  • 5.加挂Window系统共享的目录

在局域网中,需要访问其他Windows系统共享的目录,在Linux下,只需要安装samba,就可以使用samba中的命令来访问Windows的共享资源了。

使用smbclient列出Windows的共享资源  

smbclient -L 192.168.100.111

根据上面所列出Windows的共享资源,根据需要选择加挂到本地Linux中去的Windows的共享资源,然后使用smbmount或mount来加挂,命令如下:

smbmount //192.168.100.111/public /public/

mount //192.168.100.111/d /mnt/cdrom -o username=terry (在命令行输入密码)
mount //192.168.100.111/d /mnt/cdrom -o username=terry$1234 (

mount //192.168.100.111/d /mnt/cdrom -o username=terry$1234 (

mount //192.168.100.111/d /mnt/cdrom -o username=terry$1234 (

mount //192.168.100.111/d /mnt/cdrom -o username=terry$1234 (不需要在命令行输入密码)



    • l  步骤四:在启动时自动加挂,两种方法:

方法1.

把加挂的命令放在/etc/rc.d/rc.local中。

方法2.

修改分区配置文件/etc/fstab,在启动时加挂文件系统


    • l  步骤五:查看U盘:

命令:

cd /mnt/usb

ls

  • 客户端挂载U盘:
        除了上面介绍的采用命令行的方法之外,我们还可以使用其它的客户端,如LinNeighborhood 、networkneighbours、ksmbshare等,这里不做详细介绍,请自行查阅资料。

注意:以上所有命令,必须以root身份才能执行。


linux挂载U盘、移动硬盘后无法更改权限

  

    话说最近在树莓派上搭建了一个owncloud,因为树莓派的存储空间有限,就插了个16G的U盘,然后设置成开机自动挂载。这里稍微注意一下的是U盘的格式最好不要NTFS,因为一般情况下NTFS格式的文件系统linux只具有读的权限。就这样奇怪的事情发生了,U盘挂载之后无法对U盘内的文件更改权限,连超级用户也不行。调了一段时间之后才看到如下文章,转载至此,方便今后查阅。个人建议将外接U盘格式化成ext3,ext4,一了百了。

       原文地址:让linux挂载的移动硬盘具有执行权限

本文试图通过探求达到让linux系统挂载的移动硬盘具有可执行权限之目的的途径来梳理有关linux系统设备挂载、用户和群组、以及文档权限方面的基础知识。

一、提出问题

当插入一个windows分区格式的移动硬盘或者U盘时,linux系统自动挂载该移动硬盘到/media目录下,通过ls -al查看其权限,显示为:drwx------,证明我们可以进入到该盘符目录,但当进一步查看该盘符下的某可执行文件的权限时,发现其为-rw-------,即可以对该文件进行读写操作,但不能执行该文件,通过chmod更改权限也无济于事,此时如何获得执行权限?(再比如在移动硬盘上有一源代码,通过编译产生了目标程序,但是当通过./来执行时,却告知没有权限,同时sudo chmod +x也不起任何作用,在实际工作中遇到这样的情况时,一般可以通过将源码拷贝到linux系统磁盘中进行编译或者将编译好的目标程序拷贝到linux系统的磁盘中再使用chmod更改权限来解决,但有时候这样来回拷贝费时费力,如果能直接让linux系统挂载的移动硬盘具有执行权限就方便多了)

二、linux设备挂载

这一问题涉及到硬盘挂载,首先需要了解linux系统中与磁盘挂载相关的两个系统文件,即/etc/fstab和/etc/mtab,前者是系统分区信息以及系统启动时磁盘的挂载参数,该文件是一个静态文件(系统启动后不再改变,如人为改变,需要重启系统);后者是当前系统中已经挂载的磁盘列表,该文件是一个动态文件,即随系统mount和umount文件系统而随时发生改变,例如当插入U盘时,系统在mtab文件中写入该磁盘的相关信息,当拔下U盘时,系统随之删除mtab文件中有关该磁盘的信息。

fstab文件内容的格式如下:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>          <options>                   <dump>  <pass>

……
proc                       /proc                   proc    nodev,noexec,nosuid              0                 0

……

mtab文件内容的格式如下:

……
proc                       /proc                    proc   rw,noexec,nosuid,nodev          0                 0

……

可见fstab和mtab文件中的格式是一样的,都是按照“设备名称—挂载点—分区类型—挂载选项—dump选项—pass选项”的格式组织列表。

1、设备名称是指系统中设备的名称,比如/dev/sda1或/etc/sdb1或/etc/sdc1等,这些设备名称可以通过sudo fdisk -l命令来查看。(上文fstab和mtab文件格式示例中的proc设备是一个虚拟设备,并不在磁盘中真实存在,而仅仅存在于内存中,存储有关进程和系统的信息)

2、挂载点实际上就是为挂载磁盘创建的文件夹,比如./,./usr,和./swap这样的系统默认挂载点,当然我们可以自己使用mkdir创建一个文件夹作为挂载点。

3、分区类型在linux下面有ext2,ext3,ext4,jfs,jfs2,reiserfs,reiser4,swap等,在windows下面有FAT和NTFS等。

4、常用的挂载选项包括:

  • (1)auto和noauto: auto允许系统自动挂载或使用mount -a就能挂载,fstab默认就是这个选项 ;noauto使系统开机不自动挂载 或使用mount -a时不挂载;
  • (2)rw和ro:rw表示以读写权限挂载该设备,ro表示以只读权限挂载该设备;
  • (3)suid和nosuid:suid表示允许对该设备进行uid和gid的设置操作,nosuid就是不允许设置uid和gid;
  • (4)dev和nodevdev表示同时挂载文件系统上的特殊设备,nodev表示不挂载这些特殊设备;
  • (5)exc和noexc:exec表示允许执行该文件系统下的二进制文件,noexc当然表示不允许执行二进制文件;
  • (6)user、nouser、users和owner:user允许指定的普通用户挂载该设备,nouser表示禁止普通用户挂载该设备(仅root可以挂载该设备),users表示允许所有普通用户挂载该设备,owner表示仅设备所有者可以挂载。user和users选项同时隐含noexec,nosuid,nodev选项;
  • (7)sync和asnyc:sync表示对该设备的I/O操作同步进行,不进行缓冲处理,而async表示不同步,进行缓冲处理;
  • (8)defaults: 该选项是rw, suid, dev, exec, auto, nouser, and async这些选项的组合。
  • 此外,linux系统针对不同的文件系统还可以设定其他特别选项,例如:
  1.     对Windows下的NTFS文件系统,可以设置utf8(表示采用UTF-8转换文件名称)、uid=****(挂载设备的指定用户id,可以通过id命令或者查看/etc/passwd文件方式获得)、gid=****(挂载设备的指定用户群组id)和umask=***(挂载设备的权限屏蔽,八进制数值)等,
  2.    对Windows下的FAT(包括msdos,umsdos,vfat等)文件系统,可以设置uid=****,gid=****,umask=***,dmask=***(挂载设备时应用于目录的权限屏蔽,八进制数值)和fmask=***(挂载设备时应用于普通文件的权限屏蔽,八进制数值)。更多挂载选项可以参见man mount。

5、dump选项用来设置是否让备份程序dump备份文件系统,0为不备份,1为备份,如果上次用dump备份,将显示备份至今的天数。

6、pass选项,告诉fsck程序在开机时以什么顺序检查文件系统,为0就表示不检查,(./)分区只能是1,其它的分区只能是2,当数字相同就同时检查。

三、linux用户和群组以及权限

    了解了上文中所讲的设备挂载,基本已经知道如何在linux下面挂载windows分区格式的移动硬盘了,关键就是设置挂载选项从而获得相应权限。在linux系统中权限设置与用户和群组概念直接相关,比如在上文中使用ls -al命令时,获得的有关权限的信息(10个字符,如drwx------)可以分成四个部分,即目录/文件标识(第1个字符,d表示目录,-表示文件,其他还可以为l,b和c)、所有者权限(第2-4个字符)、所有者所在的用户群组权限(第5-7个字符)以及其他用户权限(最后3个字符)。

    权限在linux系统安全性方面具有重要作用,在此不述。权限的表示有两种方式,即字符式和数字式:字符式用如上文中的r、w和x三个字符来分别表示读、写和执行权限,-表示不具有任何权限;而数字式的权限表示方法用4、2、1三个数字分别表示读、写和执行权限,0表示不具有任何权限,用数字式表示文档所有者、群组和其他用户的权限时同一个组的权限需要累加,例如某文档的权限是- rwx rw- ---,则用数字式表示为760。

    至此,我们可以回过头去解决问题了,当挂载Windows分区格式的文件系统时,我们可以通过uid=****,gid=****和umask=***/dmask=***/fmask=***来设置权限,uid和gid的设置并不难,直接设置为自己的uid和gid就可以;关于权限mask的设置采用数字式的,同样第一个数字表示所有者的权限mask,第二个数字表示群组的权限mask,第三个数字表示其他用户的权限mask,如果umask=000,就表示不屏蔽任何用户的任何权限,即所有用户具有读、写和执行权限,再例如fmask=033,就表示文档所有者具有读、写和执行权限,而群组和其他用户只具有读取的权限,而屏蔽了权限3(1和2之和)。

四、解决问题

综上,可以在/etc/fstab中添加像下面这样的挂载配置,并重启系统让系统挂载硬盘,从而获得执行权限。

# <file system>   <mount point>       <type>                <options>                                 <dump>        <pass>

  /dev/sdb1        /media/sdb1         ntfs      utf8,uid=1000,gid=1000, umask=000                     0             0


    综上所述,关于Linux系统电脑上面装载U盘或USB移动硬盘等设备的问题基本可以解决。



  • 8
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值