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


    目录

    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盘的挂载

    1. #!/bin/bash
    2. mountusb(){
    3. clear
    4. mkdir -p /mnt/usb
    5. fdisk -l | grep /dev/sd
    6. echo -e "Please Enter the device name of usb as shown above:\c"
    7. read PARAMETER
    8. mount /dev/$PARAMETER /mnt/usb
    9. echo "successfully mount!"
    10. }

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

    (2)U盘的卸载

    1. umountusb(){
    2. clear
    3. umount /mnt/usb
    4. echo "successfully umount!"
    5. }

    (3)显示U盘中的文件

    1. display(){
    2. clear
    3. ls -la /mnt/usb
    4. }

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

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

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

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

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

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

    (6)退出程序

    1. quit(){
    2. clear
    3. echo "************************8"
    4. echo"*** thank you to use ,Good bye! ***"
    5. exit 0
    6. }

    (7)调用函数

    1. clear
    2. while true
    3. do
    4. echo "============================="
    5. echo "*** LINUX USB MANAGE PROGRAM ***"
    6. echo " 1-MOUNT USB"
    7. echo " 2-UNMOUNT USB"
    8. echo " 3-DISPLEAY USB INFORMATION"
    9. echo " 4-COPYFILE IN DISK TO USB"
    10. echo " 5-COPY FILE IN USB TO DISK"
    11. echo " 0-EXIT"
    12. echo "============================"
    13. echo -e "Please Enter a Choice (0-5):\c"
    14. read CHOICE
    15. case $CHOICE in
    16. 1)
    17. mountusb
    18. ;;
    19. 2)
    20. umountusb
    21. ;;
    22. 3)
    23. display
    24. ;;
    25. 4)
    26. cpdisktousb
    27. ;;
    28. 5)
    29. cpusbtodisk
    30. ;;
    31. 0)
    32. quit
    33. ;;
    34. *)
    35. echo "Invalid Choice Corrent Choice is(0-5)"
    36. sleep 4
    37. clear
    38. continue
    39. ;;
    40. esac
    41. done

    (8)运行结果

    第一步:挂载U盘

    第二步:查看U盘文件

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

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

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

     

    第五步:卸载U盘挂载

  • 相关阅读:
    基于SpringBoot的精准扶贫管理系统
    C. Rooks Defenders - 树状数组
    Vue.js 进阶技巧:keep-alive 缓存组件解析
    【高等数学基础进阶】多元函数的极值与最值
    webf 框架概述
    Methoxy-PEG-PLGA,mPEG-PLGA是一种可生物降解的两亲性嵌段共聚物
    隧道工程资质怎么办理,办理隧道工程三级资质有什么要求
    网络——DHCP服务器、DNS服务器实验
    面试系列Redis:缓存穿透、击穿、雪崩的解决方案
    vue知识点————$nextTick
  • 原文地址:https://blog.csdn.net/Keep_Trying_Go/article/details/127823978