Linux下实现U盘的挂载,复制文件和卸载等操作
创始人
2024-04-07 20:11:25
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-5共6个命令选项,

    • 1为挂载U盘;

    • 2为卸载U盘;

    • 3为显示U盘的信息;

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

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

    • 选0为退出。

代码实现

(1)U盘的挂载

#!/bin/bashmountusb(){clearmkdir -p /mnt/usbfdisk -l | grep /dev/sdecho -e "Please Enter the device name of usb as shown above:\c"read PARAMETERmount /dev/$PARAMETER /mnt/usbecho "successfully mount!"
}

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

(2)U盘的卸载

umountusb(){clearumount /mnt/usbecho "successfully umount!"
}

(3)显示U盘中的文件

display(){clearls -la /mnt/usb
}

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


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

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

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

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

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

(6)退出程序

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

(7)调用函数

    clearwhile truedoecho "============================="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 CHOICEcase $CHOICE in1)mountusb;;2)	umountusb;;3)display;;4)cpdisktousb;;5)cpusbtodisk;;0)quit;;*)echo "Invalid Choice Corrent Choice is(0-5)"sleep 4clearcontinue;;esacdone

(8)运行结果

第一步:挂载U盘

第二步:查看U盘文件

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

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

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

 

第五步:卸载U盘挂载

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...