插上USB存储设备后,先用 fdisk -l 或 parted -l 命令来查询操作系统检测到的磁盘详细列表,
找到插入的设备在系统的代号,如sda1, sda2, sdb1, sd2……然后继续操作如下。
挂载U盘(设定字符集,保证能够正常显示中文)
关于mount中文显示乱码的问题
当我用命令
mount -t vfat /dev/hda7 /mnt/fat 时候,里面出现乱码,经上网查证,这是因为字符集的问题,解决方法:用locale -a 看了一下本地字符集,没有发现gb2312和cp936
挂载U盘(指定U盘文件系统格式fat32格式)
1,以root用户登陆
先加载USB模块 modprobe usb-storage3,载入 u 盘,需键入以下命令:mount /dev/sda /mnt/usb_disk
针对普通U盘(一般是fat32格式)来讲,挂载方法很简单,将U盘挂载到根目录下的mnt文件夹中命令为:
mount -t vfat /dev/sdb1 /mnt //指定U盘文件系统格式
成功后,即可使用 u 盘了, 文件就在目录 /mnt/usb 下。大容量U盘(exfat)
安装fuse-exfat
由于CentOS没有默认支持exfat格式,因此需要添加fuse-exfat。
安装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
(其实都类似)
卸载的方法是统一的
umount /dev/sdb1
如果要挂载的U盘是NTFS格式呢?首先要安装ntfs-3g
yum install ntfs-3g
之后就可以正常挂载了
mount -t ntfs-3g /dev/sdb1 /mnt
前言
数据迁移是我们经常会遇到的,有时候做大数据量迁移时,为了快速迁移大数据,有可能在Linux服务器上临时挂载NTFS格式的移动硬盘, 一般情况下,Linux是识别不了NTFS格式移动硬盘的(需要重编译Linux核心才能,加挂NTFS分区),
这时候为了能让Linux服务器能够识别NTFS的移动硬盘,就必须安装ntfs-3g(Third Generation Read/Write NTFS Driver)的包。
一、NTFS-3G介绍
资料介绍
二、安装与挂载
步骤一:解压安装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里的硬盘可以参考这个方法,接着介绍:
命令:mkdir /mnt/usb
命令:cat /proc/partitions
插u盘之前,上述命令cat /proc/partitions,观察现在系统的分区情况;插上u盘后,再次运行上述命令,查看多出来的分区(通常是sda1)。
命令: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
命令:
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 (不需要在命令行输入密码)
方法1.
把加挂的命令放在/etc/rc.d/rc.local中。
方法2.
修改分区配置文件/etc/fstab,在启动时加挂文件系统
命令:
cd /mnt/usb
ls
除了上面介绍的采用命令行的方法之外,我们还可以使用其它的客户端,如LinNeighborhood 、networkneighbours、ksmbshare等,这里不做详细介绍,请自行查阅资料。
注意:以上所有命令,必须以root身份才能执行。
话说最近在树莓派上搭建了一个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.
#
#
……
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、常用的挂载选项包括:
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中添加像下面这样的挂载配置,并重启系统让系统挂载硬盘,从而获得执行权限。
#
/dev/sdb1 /media/sdb1 ntfs utf8,uid=1000,gid=1000, umask=000 0 0
综上所述,关于Linux系统电脑上面装载U盘或USB移动硬盘等设备的问题基本可以解决。