Linux自动挂载磁盘的方法

news2025/1/21 16:58:01

来自宝塔的自动挂载磁盘脚本:


#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
LANG=en_US.UTF-8
setup_path=/www
#if [ $1 != "" ];then
    #setup_path=$1;
#fi

#检测磁盘数量
sysDisk=`cat /proc/partitions|grep -v name|grep -v ram|awk '{print $4}'|grep -v '^$'|grep -v '[0-9]$'|grep -v 'vda'|grep -v 'xvda'|grep -v 'sda'|grep -e 'vd' -e 'sd' -e 'xvd'`
if [ "${sysDisk}" == "" ]; then
    echo -e "ERROR!This server has only one hard drive,exit"
    echo -e "此服务器只有一块磁盘,无法挂载"
    echo -e "Bye-bye"
    exit;
fi
#检测/www目录是否已挂载磁盘
mountDisk=`df -h | awk '{print $6}' |grep www`
if [ "${mountDisk}" != "" ]; then
    echo -e "www directory has been mounted,exit"
    echo -e "www目录已被挂载,不执行任何操作"
    echo -e "Bye-bye"
    exit;
fi
#检测是否有windows分区
winDisk=`fdisk -l |grep "NTFS\|FAT32"`
if [ "${winDisk}" != "" ];then
    echo 'Warning: The Windows partition was detected. For your data security, Mount manually.';
    echo "危险 数据盘为windwos分区,为了你的数据安全,请手动挂载,本脚本不执行任何操作。"
    exit;
fi
echo "
+----------------------------------------------------------------------
| Bt-WebPanel Automatic disk partitioning tool
+----------------------------------------------------------------------
| Copyright © 2015-2017 BT-SOFT(http://www.bt.cn) All rights reserved.
+----------------------------------------------------------------------
| Auto mount partition disk to $setup_path
+----------------------------------------------------------------------
"


#数据盘自动分区
fdiskP(){
    
    for i in `cat /proc/partitions|grep -v name|grep -v ram|awk '{print $4}'|grep -v '^$'|grep -v '[0-9]$'|grep -v 'vda'|grep -v 'xvda'|grep -v 'sda'|grep -e 'vd' -e 'sd' -e 'xvd'`;
    do
        #判断指定目录是否被挂载
        isR=`df -P|grep $setup_path`
        if [ "$isR" != "" ];then
            echo "Error: The $setup_path directory has been mounted."
            return;
        fi
        
        isM=`df -P|grep '/dev/${i}1'`
        if [ "$isM" != "" ];then
            echo "/dev/${i}1 has been mounted."
            continue;
        fi
            
        #判断是否存在未分区磁盘
        isP=`fdisk -l /dev/$i |grep -v 'bytes'|grep "$i[1-9]*"`
        if [ "$isP" = "" ];then
                #开始分区
                fdisk -S 56 /dev/$i << EOF
n
p
1


wq
EOF

            sleep 5
            #检查是否分区成功
            checkP=`fdisk -l /dev/$i|grep "/dev/${i}1"`
            if [ "$checkP" != "" ];then
                #格式化分区
                mkfs.ext4 /dev/${i}1
                mkdir $setup_path
                #挂载分区
                sed -i "/\/dev\/${i}1/d" /etc/fstab
                echo "/dev/${i}1    $setup_path    ext4    defaults    0 0" >> /etc/fstab
                mount -a
                df -h
            fi
        else
            #判断是否存在Windows磁盘分区
            isN=`fdisk -l /dev/$i|grep -v 'bytes'|grep -v "NTFS"|grep -v "FAT32"`
            if [ "$isN" = "" ];then
                echo 'Warning: The Windows partition was detected. For your data security, Mount manually.';
                return;
            fi
            
            #挂载已有分区
            checkR=`df -P|grep "/dev/$i"`
            if [ "$checkR" = "" ];then
                    mkdir $setup_path
                    sed -i "/\/dev\/${i}1/d" /etc/fstab
                    echo "/dev/${i}1    $setup_path    ext4    defaults    0 0" >> /etc/fstab
                    mount -a
                    df -h
            fi
            
            #清理不可写分区
            echo 'True' > $setup_path/checkD.pl
            if [ ! -f $setup_path/checkD.pl ];then
                    sed -i "/\/dev\/${i}1/d" /etc/fstab
                    mount -a
                    df -h
            else
                    rm -f $setup_path/checkD.pl
            fi
        fi
    done
}
stop_service(){

    /etc/init.d/bt stop

    if [ -f "/etc/init.d/nginx" ]; then
        /etc/init.d/nginx stop > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/httpd" ]; then
        /etc/init.d/httpd stop > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/mysqld" ]; then
        /etc/init.d/mysqld stop > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/pure-ftpd" ]; then
        /etc/init.d/pure-ftpd stop > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/tomcat" ]; then
        /etc/init.d/tomcat stop > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/redis" ]; then
        /etc/init.d/redis stop > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/memcached" ]; then
        /etc/init.d/memcached stop > /dev/null 2>&1
    fi

    if [ -f "/www/server/panel/data/502Task.pl" ]; then
        rm -f /www/server/panel/data/502Task.pl
        if [ -f "/etc/init.d/php-fpm-52" ]; then
            /etc/init.d/php-fpm-52 stop > /dev/null 2>&1
        fi

        if [ -f "/etc/init.d/php-fpm-53" ]; then
            /etc/init.d/php-fpm-53 stop > /dev/null 2>&1
        fi

        if [ -f "/etc/init.d/php-fpm-54" ]; then
            /etc/init.d/php-fpm-54 stop > /dev/null 2>&1
        fi

        if [ -f "/etc/init.d/php-fpm-55" ]; then
            /etc/init.d/php-fpm-55 stop > /dev/null 2>&1
        fi

        if [ -f "/etc/init.d/php-fpm-56" ]; then
            /etc/init.d/php-fpm-56 stop > /dev/null 2>&1
        fi

        if [ -f "/etc/init.d/php-fpm-70" ]; then
            /etc/init.d/php-fpm-70 stop > /dev/null 2>&1
        fi

        if [ -f "/etc/init.d/php-fpm-71" ]; then
            /etc/init.d/php-fpm-71 stop > /dev/null 2>&1
        fi
    fi
}

start_service()
{
    /etc/init.d/bt start

    if [ -f "/etc/init.d/nginx" ]; then
        /etc/init.d/nginx start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/httpd" ]; then
        /etc/init.d/httpd start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/mysqld" ]; then
        /etc/init.d/mysqld start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/pure-ftpd" ]; then
        /etc/init.d/pure-ftpd start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/tomcat" ]; then
        /etc/init.d/tomcat start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/redis" ]; then
        /etc/init.d/redis start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/memcached" ]; then
        /etc/init.d/memcached start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/php-fpm-52" ]; then
        /etc/init.d/php-fpm-52 start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/php-fpm-53" ]; then
        /etc/init.d/php-fpm-53 start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/php-fpm-54" ]; then
        /etc/init.d/php-fpm-54 start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/php-fpm-55" ]; then
        /etc/init.d/php-fpm-55 start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/php-fpm-56" ]; then
        /etc/init.d/php-fpm-56 start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/php-fpm-70" ]; then
        /etc/init.d/php-fpm-70 start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/php-fpm-71" ]; then
        /etc/init.d/php-fpm-71 start > /dev/null 2>&1
    fi

    if [ -f "/etc/init.d/php-fpm-72" ]; then
        /etc/init.d/php-fpm-71 start > /dev/null 2>&1
    fi
    
    if [ -f "/etc/init.d/php-fpm-73" ]; then
        /etc/init.d/php-fpm-71 start > /dev/null 2>&1
    fi

    echo "True" > /www/server/panel/data/502Task.pl
}

while [ "$go" != 'y' ] && [ "$go" != 'n' ]
do
    read -p "Do you want to try to mount the data disk to the $setup_path directory?(y/n): " go;
done

if [ "$go" = 'n' ];then
    echo -e "Bye-bye"
    exit;
fi

if [ -f "/etc/init.d/bt" ] && [ -f "/www/server/panel/data/port.pl" ]; then
    disk=`cat /proc/partitions|grep -v name|grep -v ram|awk '{print $4}'|grep -v '^$'|grep -v '[0-9]$'|grep -v 'vda'|grep -v 'xvda'|grep -v 'sda'|grep -e 'vd' -e 'sd' -e 'xvd'`
    diskFree=`cat /proc/partitions |grep ${disk}|awk '{print $3}'`
    wwwUse=`du -sh -k /www|awk '{print $1}'`

    if [ "${diskFree}" -lt "${wwwUse}" ]; then
        echo -e "Sorry,your data disk is too small,can't coxpy to the www."
        echo -e "对不起,你的数据盘太小,无法迁移www目录数据到此数据盘"
        exit;
    else
        echo -e ""
        echo -e "stop bt-service"
        echo -e "停止宝塔服务"
        echo -e ""
        sleep 3
        stop_service
        echo -e ""
        mv /www /bt-backup
        echo -e "disk partition..."
        echo -e "磁盘分区..."
        sleep 2
        echo -e ""
        fdiskP
        echo -e ""
        echo -e "move disk..."
        echo -e "迁移数据中..."
        \cp -r -p -a /bt-backup/* /www
        echo -e ""
        echo -e "Done"
        echo -e "迁移完成"
        echo -e ""
        echo -e "start bt-service"
        echo -e "启动宝塔服务"
        echo -e ""
        start_service
    fi
else
    fdiskP
    echo -e ""
    echo -e "Done"
    echo -e "挂载成功"
fi

使用方法:

1、复制代码,保存为 autodisk.sh
2、bash autodisk.sh 即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2279911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

logback日志自定义占位符

前言 在大型系统运维中&#xff0c;很大程度上是需要依赖日志的。在java大型web工程中&#xff0c;一般都会使用slf4jlogback这一个组合来实现日志的管理。 logback中很多现成的占位符可以可以直接使用&#xff0c;比如线程号【%t】、时间【%d】、日志等级【%p】&#xff0c;…

Stable Diffusion 3.5 模型在 Linux 上的部署指南

文章目录 前言-参考资料如下一. ComfyUI安装二.模型下载2.1 安装GGUF和T5 xxl编码模型2.2 安装ComfyUI辅助插件2.3 启动ComfyUI2.4 基础ComfyUI和SD3.5配置2.5 demo 前言-参考资料如下 ComfyUI WIKI教程 sd3.5 github 尝试过sd集成ollama&#xff0c;但是sd在ollama上无法良好…

【Go】Go数据类型详解—指针

1. 前言 在我看来&#xff0c;一门编程语言语法的核心就在于数据类型。而各类编程语言的基本数据类型大致相同&#xff1a;int整型、float浮点型、string字符串类型、bool布尔类型&#xff0c;但是在一些进阶数据类型上就有所不同了。本文将会介绍Go语言当中核心的数据类型——…

Grafana 统一可视化了,告警如何统一?

对于大部分公司&#xff0c;通常都不止一套监控、可观测性相关的系统&#xff0c;云上的、云下的&#xff0c;开源的、商业的&#xff0c;指标的、日志的、链路的&#xff0c;各个系统体验不同&#xff0c;权限难管&#xff0c;如何统一化并为各个团队赋能&#xff0c;是很多技…

LeetCode 110.平衡二叉树

题目描述 给定一个二叉树&#xff0c;判断它是否是平衡二叉树。 示例 1&#xff1a; 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;false 示例 3&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;true 提示&#xff1a; …

【银河麒麟高级服务器操作系统】业务访问慢网卡丢包现象分析及处理过程

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;product.kylinos.cn 开发者专区&#xff1a;developer.kylinos.cn 文档中心&#xff1a;document.kylinos.cn 交流论坛&#xff1a;forum.kylinos.cn 服务器环境以及配置 【内核版本…

软件测试—— 接口测试(HTTP和HTTPS)

软件测试—— 接口测试&#xff08;HTTP和HTTPS&#xff09; HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头&#xff08;Request Headers&#xff09;示例请求标头 响应标头&#xff08;Response Header…

OpenCV相机标定与3D重建(60)用于立体校正的函数stereoRectify()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 为已校准的立体相机的每个头计算校正变换。 cv::stereoRectify 是 OpenCV 中用于立体校正的函数&#xff0c;它基于已知的相机参数和相对位置&am…

ARP 表、MAC 表、路由表、跨网段 ARP

文章目录 一、ARP 表1、PC2、路由器 - AR22203、交换机 - S57004、什么样的设备会有 ARP 表&#xff1f; 二、MAC 表什么样的设备会有 MAC 表&#xff1f; 三、路由表什么样的设备会有路由表&#xff1f; 四、抓取跨网段 ARP 包 所谓 “透明” 就是指不用做任何配置 一、ARP 表…

深度学习 · 手撕 DeepLearning4J ,用Java实现手写数字识别 (附UI效果展示)

引言 随着人工智能技术的不断发展&#xff0c;手写数字识别已经成为深度学习领域的一个经典案例。不管是老牌的机器学习模型还是现代的神经网络架构&#xff0c;手写数字识别总是大家学习和实战的起点之一。而对于我们日常使用的Java开发者来说&#xff0c;借助DeepLearning4J…

天机学堂5-XxlJobRedis

文章目录 梳理前面的实现&#xff1a;Feign点赞改进 day07-积分系统bitmap相关命令签到增加签到记录计算本月已连续签到的天数查询签到记录 积分表设计签到-->发送RabbitMQ消息&#xff0c;保存积分对应的消费者&#xff1a;**消费消息 用于保存积分**增加积分查询个人今日积…

2024 年度学习总结

目录 1. 前言 2. csdn 对于我的意义 3. 写博客的初衷 3.1 现在的想法 4. 写博客的意义 5. 关于生活和博客创作 5.1 写博客较于纸质笔记的优势 6. 致 2025 1. 前言 不知不觉, 来到 csdn 已经快一年了, 在这一年中, 我通过 csdn 学习到了很多知识, 结识了很多的良师益友…

使用Chrome和Selenium实现对Superset等私域网站的截图

最近遇到了一个问题&#xff0c;因为一些原因&#xff0c;我搭建的一个 Superset 的 Report 功能由于节假日期间不好控制邮件的发送&#xff0c;所以急需一个方案来替换掉 Superset 的 Report 功能 首先我们需要 Chrome 浏览器和 Chrome Driver&#xff0c;这是执行数据抓取的…

[操作系统] 进程的调度

进程切换概念 时间⽚&#xff1a;当代计算机都是分时操作系统&#xff0c;没有进程都有它合适的时间⽚(其实就是⼀个计数 器)。时间⽚到达&#xff0c;进程就被操作系统从CPU中剥离下来。 死循环是如何运行&#xff1f; 当一个进程代码为死循环&#xff0c;它并不会一直占据C…

Biotin sulfo-N-hydroxysuccinimide ester ;生物素磺基-N-羟基琥珀酰亚胺酯;生物素衍生物;190598-55-1

一、生物素及其衍生物的概述 生物素衍生物是指在生物素&#xff08;Vitamin H或B7&#xff09;分子基础上进行化学修饰得到的衍生化合物。这些衍生化合物在生物医学研究、临床诊断和药物开发等领域有着广泛的应用。 生物素&#xff08;Biotin&#xff09;是一种水溶性维生素&a…

Jenkins-Pipeline简述

一. 什么是Jenkins pipeline&#xff1a; pipeline在jenkins中是一套插件&#xff0c;主要功能在于&#xff0c;将原本独立运行于单个或者多个节点的任务连接起来&#xff0c;实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL&#xff0c;任何发布流程…

Linux系统下安装配置Nginx(保姆级教程)

目录 前言 安装配置Nginx 一.下载依赖 二.下载Nginx 1. 访问官网?&#xff0c;获取需要的Nginx版本 2. 将文件下载到Linux系统 3. 解压文件 4. 解压成功后&#xff0c;当前文件夹会出现一个nginx-1.26.1文件夹&#xff0c;进入到文件夹内 5. 配置nginx 6.?编译并安…

《Linux服务与安全管理》| 邮件服务器安装和配置

《Linux服务与安全管理》| 邮件服务器安装和配置 目录 《Linux服务与安全管理》| 邮件服务器安装和配置 1.在Server01上安装dns、postfix、dovecot和telnet&#xff0c;并启动 2&#xff0e;在Server01上配置DNS服务器&#xff0c;设置MX资源记录 3&#xff0e;在server1上…

WPS数据分析000001

目录 一、表格的新建、保存、协作和分享 新建 保存 协作 二、认识WPS表格界面 三、认识WPS表格选项卡 开始选项卡 插入选项卡 页面布局选项卡 公式选项卡 数据选项卡 审阅选项卡 视图选项卡 会员专享选项卡 一、表格的新建、保存、协作和分享 新建 ctrlN------…

2025年免费量化交易软件——PTrade(含开通攻略)

量化交易软件&#xff0c;为广大投资者提供了一个便捷、高效的投资工具。 本文重点为大家介绍一款2025年好用的免费量化交易软件&#xff1a;PTrade量化&#xff0c;并详解其功能、特点、开通方法等。 一、PTrade的概念 PTrade是恒生电子开发的一款交易终端软件&#xff0c;旨…