Linux下实现U盘的挂载,复制文件和卸载等操作

发布于:2022-11-14 ⋅ 阅读:(970) ⋅ 点赞:(0)

目录

1.为什么要进行挂载

2.mount挂载

(1)fdisk查看分区

(2)mount基本格式

(3)挂载光驱

3.题目要求:

(1)U盘的挂载

(2)U盘的卸载

(3)显示U盘中的文件

(4)从硬盘复制文件到U盘

(5)从U盘复制文件到硬盘

(6)退出程序

(7)调用函数

(8)运行结果

第五步:卸载U盘挂载


Linux下Shell编程(一)

Shell程序中的特殊字符(二)

Shell程序中的流程控制(三)

Shell程序中的函数定义

Shell程序中的命令组合应用

mount挂载和分区查看fdisk

Linux下的挂载

为什么要挂载

参考文章:https://blog.csdn.net/qustdjx/article/details/7824353

提示:虽然上面这位博主已经给出了代码,但是当你运行时,你其实并知道到底在干些什么,所以是对上面的补充,并进行程序代码的解释。

1.为什么要进行挂载

  • 对于Linux来说,挂载外部设备是一个非常重要的功能,并且经常使用。就是将一个设备挂接到一个已存在目录上,这里的设备通常是存储设备,可以挂载光盘,硬盘,磁带,光盘镜像文件等;但是挂载之后这些目录以前的内容将不可用。
  • Linux系统将所有的设备都看作文件,将整个计算机的资源都整合成一个大的文件目录。如果我们要访问存储设备中的文件,必须将我呢间所在的分区挂载到一个已存在的目录上,然后通过这个目录来访问存储设备。
  • 注意:挂载源和挂载点。
    • /mnt目录存放手动挂载的硬件;

    • /media目录存放自动挂载的硬件(载点都是由系统自动建立和删除的)

    • /dev不是存放设备的驱动程序,而是作为访问外部设备文件的接口。比如,我们的U盘,插入linux系统后,用fdisk -l查看分区,显示文件为/dev/sda1。
       

2.mount挂载

(1)fdisk查看分区

  • 磁盘分区表操作工具

    格式:fdisk[参数]

    • -l:列出指定的外围设备的分区表状况;
    • -u: 搭配-l参数列表,会用分区数目取代柱数面数目,来表示每个分区的起始地址。

(2)mount基本格式

  • 挂载文件系统,使用权威超级用户或者‘/etc/fstab’中允许的使用者:

  • 格式:mount [--参数][设备名称][挂载点]

    • -a:安装在/etc/fstab文件列出的所有文件系统;

    • -l:列出当前已挂载的设备,文件系统名称和挂载点;

    • -o:指定挂载选项,如“-o nolock”表示禁用锁定,ro表示只读方式,loop表示把挂载的设备当成是一个磁盘分区;

    • -t:<文件系统类型>指定设备的文件系统类型;

  • ext2  Linux目前常用的文件系统

    • Msdos:MS-DOS的fat16;

    • Vfat:windows98常用的fat32;

    • Nfs:网络文件系统;

    • iso9660: CD-ROM光盘标准文件系统;

    • Auto:windows NT/2000/XP的文件系统;

    • Ntfs:自动检测文件系统。

(3)挂载光驱

  • 进入computer->mnt:到mnt目录下创建一个目录demo用来进行挂载:

    • mkdir /mnt/demo
  • 确定挂载源设备
    • 进入设备dev目录:cd /dev

    • 查看设备情况:ls -l 

    • 第一个例子:这里使用挂载源设备为U盘
        • 提示:可以看到该文件是一个块设备,所以不能直接进行访问,需要挂载之后才能访问。
      • 挂载语句:mount -t vfat -o ro /dev/sdb1 /mnt/demo
      • 进入root用户进行挂载时,可能会提示以下信息:
        • /dev/sdb1 is already mounted or /mnt/demo busy
          /dev/sdb1 is already mounted on /media/krgroots/disk
      • 解决方案
        • 下载dmsetup:apt-get install dmsetup
        • 执行:dmsetup status查看状态
        • 执行第二句:dmsetup remove_all
    • 第二个例子:挂载/dev/cdrom挂载源

      • 挂载语句:mount -t iso9660 -o ro /dev/cdrom /mnt/demo/
      • 可能会报错:mount: no medium found on /dev/sr0
      • 解决方案:解决方案
      • 挂载成功
    • 第三个例子:挂载光盘镜像文件(.iso文件)
      • 第一步:准备一个ISO文件,如Center-7-x86_64-DVD-1908.iso;
      • 第二步:在/mnt/目录下创建 一个ISOdemo文件:mkdir /mnt/isodemo
      • 第三步:挂载语句:mount -t iso9660 -o loop /documents/Center-7-x86_64-DVD-1908.iso /mnt/isodemo
  • 开机自动挂载
    • 挂载的资源在重庆系统之后失效,需要重新挂载,如果需要设置开机自动挂载,需要将挂载信息设置到/etc/fstab配置文件当中,步骤如下:
    • 比如将/dev/cdrom挂载源和Center-7-x86_64-DVD-1908.iso设置为自动挂载;
      • 参数解释:
        • /dev/cdrom:表示挂载源,要挂载的磁盘分区或者存储设备或者读取文件系统;
        • /mnt/cdrom:表示挂载点,挂载的位置;
        • iso9660:表示文件系统类型,ext4文件系统,iso9660标准文件系统,swap表示交换分区等;
        • default:挂载参数,一般默认;
        • 第一个0:表示dump选项,dump工具通过这个选项位置上的数字来决定文件系统是否需要备份,如果是0,dump被忽略,一般大多数的dump都是0;
        • 第二个0:读取文件系统时检查顺序,允许的数字为0,1,2.根目录应当获得最高的优先权1,表示其他所有需要被检查的设备为2,不检查使用0.
    • 接下来是重启系统:重新启动系统

3.题目要求:

  • 编写一个Shell程序,呈现一个菜单,有0-56个命令选项,

    • 1为挂载U盘;

    • 2为卸载U盘;

    • 3为显示U盘的信息;

    • 4把硬盘中的文件拷贝到U盘;

    • 5把U盘中的文件拷贝到硬盘中;

    • 选0为退出。

代码实现

(1)U盘的挂载

#!/bin/bash

mountusb(){
        clear
       	mkdir -p /mnt/usb
        fdisk -l | grep /dev/sd
        echo -e "Please Enter the device name of usb as shown above:\c"
        read PARAMETER
        mount /dev/$PARAMETER /mnt/usb
	    echo "successfully mount!"
}

提示:fdisk -l | grep /dev/sd:表示查看分区,并将结果通过管道“|”的方式作为grep的输入,使用grep查看/dev/目录以sd开头的文件。

(2)U盘的卸载

umountusb(){
    clear
    umount /mnt/usb
	echo "successfully umount!"
}

(3)显示U盘中的文件

display(){
        clear
        ls -la /mnt/usb
}

(4)从硬盘复制文件到U盘


cpdisktousb(){
        clear
        echo -e"Please Enter filename to be Copide(number Current director):\c"
        read FILE
        echo "Copying please wait..."
        cp $FILE /mnt/usb
}

提示:这里的 cp $FILE /mnt/usb:表示将文件从硬盘复制到U盘中。 

(5)从U盘复制文件到硬盘

cpusbtodisk(){
        clear
        echo -e "Please Enter the filename to be Copide in USB:\c"
        read FILE
        echo "Copying ,Please wait..."
        cp /mnt/usb/$FILE .
}

提示:注意这里的cp /mnt/usb/$FILE  .(注意这里的点)表示从U盘中复制文件到当前目录下。 

(6)退出程序

quit(){
        clear
        echo "************************8"
        echo"***  thank you to use ,Good bye!   ***"
        exit 0
}

(7)调用函数

    clear
	while true
                do
                	echo "============================="
                	echo "***  LINUX USB MANAGE PROGRAM  ***"
                	echo "        1-MOUNT USB"              
                	echo "        2-UNMOUNT USB"
                	echo "        3-DISPLEAY USB INFORMATION"
                	echo "        4-COPYFILE IN DISK TO USB"
                	echo "        5-COPY FILE IN USB TO DISK"
                	echo "        0-EXIT"
                	echo "============================"
                	echo -e "Please Enter a Choice (0-5):\c"

                	read CHOICE
                
			        case $CHOICE in
                	        1)
                        	        mountusb
                                	;;
                        	2)	
                                	umountusb
                                	;;
                        	3)
                                	display
                                	;;
                        	4)
                                	cpdisktousb
                                	;;
                        	5)
                                	cpusbtodisk
                                	;;
                       	    0)
                               		quit
					                ;;
                        	*)
                                	echo "Invalid Choice Corrent Choice is(0-5)"
                                	sleep 4
                                	clear
					                continue
                                	;;

                        	esac
			        done
				

(8)运行结果

第一步:挂载U盘

第二步:查看U盘文件

第三步:从硬盘复制文件到U盘

查看文件是否复制成功到U盘: 

第四步:从U盘复制文件到硬盘

 

第五步:卸载U盘挂载

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到