共计 1816 个字符,预计需要花费 5 分钟才能阅读完成。
功能说明
这个脚本用于自动化完成以下任务:
- 对新磁盘进行分区
- 格式化为 ext4 文件系统
- 创建挂载点并挂载
- 配置开机自动挂载
使用方法
sudo ./disk_mount.sh <磁盘设备> [挂载点]
参数说明
<磁盘设备>
:必需参数,指定要处理的磁盘设备(如/dev/sdb
)[挂载点]
:可选参数,指定挂载位置,默认为/data
使用示例
# 使用默认挂载点 /data
sudo ./disk_mount.sh /dev/sdb
# 指定自定义挂载点
sudo ./disk_mount.sh /dev/sdb /mnt/data
完整代码
#!/bin/bash
# 函数:显示使用方法
show_usage() {
echo "用法: $0 <磁盘设备> [挂载点]"
echo "示例: $0 /dev/sdb /data"
echo "注意: 磁盘设备参数是必需的"
exit 1
}
# 检查 root 权限
if [ "$EUID" -ne 0 ]; then
echo "错误: 请以 root 权限运行此脚本"
exit 1
fi
# 检查必需的第一个参数
if [ -z "$1" ]; then
echo "错误: 未指定磁盘设备"
show_usage
fi
# 设置变量
disk="$1"
mount_point="${2:-/data}" # 如果 $2 为空,则使用默认值 /data
# 验证磁盘设备是否存在
if [ ! -b "$disk" ]; then
echo "错误: 磁盘设备 $disk 不存在或不是块设备"
exit 1
fi
# 创建挂载点
if [ ! -d "$mount_point" ]; then
echo "创建挂载点 $mount_point"
mkdir -p "$mount_point" || {
echo "错误: 无法创建挂载点 $mount_point"
exit 1
}
fi
# 检查磁盘是否已经分区并格式化
if ! blkid | grep -q "$disk"; then
echo "$disk 尚未分区或格式化"
echo "正在分区并格式化磁盘..."
# 创建新的分区表和主分区
parted -s "$disk" mklabel gpt || {
echo "错误: 创建分区表失败"
exit 1
}
parted -s "$disk" mkpart primary ext4 0% 100% || {
echo "错误: 创建分区失败"
exit 1
}
sleep 2 # 等待分区表生效
# 格式化分区
mkfs.ext4 "${disk}1" || {
echo "错误: 格式化分区失败"
exit 1
}
else
echo "$disk 已分区,跳过分区步骤"
fi
# 获取分区的 UUID
uuid=$(blkid -s UUID -o value "${disk}1")
if [ -z "$uuid" ]; then
echo "错误: 无法获取 ${disk}1 的 UUID"
exit 1
fi
# 检查是否已挂载
if ! mount | grep -q "$mount_point"; then
echo "挂载 ${disk}1 到 $mount_point"
mount "${disk}1" "$mount_point" || {
echo "错误: 挂载失败"
exit 1
}
else
echo "$mount_point 已挂载"
fi
# 配置开机自动挂载
if ! grep -q "$uuid" /etc/fstab; then
echo "将 ${disk}1 添加到 /etc/fstab"
echo "UUID=$uuid $mount_point ext4 defaults 0 2" >> /etc/fstab || {
echo "错误: 更新 /etc/fstab 失败"
exit 1
}
else
echo "${disk}1 已存在于 /etc/fstab 中"
fi
# 验证挂载状态
if mountpoint -q "$mount_point"; then
echo "挂载成功,设置已完成"
echo "磁盘设备: $disk"
echo "挂载点: $mount_point"
echo "UUID: $uuid"
else
echo "错误: 最终挂载验证失败"
exit 1
fi
脚本功能说明
-
参数验证
- 检查是否以 root 权限运行
- 验证必需的磁盘设备参数
- 检查磁盘设备是否存在
-
磁盘处理
- 创建 GPT 分区表
- 创建主分区
- 格式化为 ext4 文件系统
-
挂载处理
- 创建挂载点目录
- 挂载分区
- 配置 /etc/fstab 实现开机自动挂载
-
错误处理
- 各个关键步骤都有错误检查
- 出错时提供明确的错误信息
- 失败时及时退出脚本
注意事项
- 必须以 root 权限运行脚本
- 请确保指定的磁盘设备正确,避免误操作
- 如果磁盘已经包含数据,请先备份重要数据
- 脚本会自动格式化未分区的磁盘,请谨慎使用
依赖工具
- parted
- blkid
- mkfs.ext4
- mount
正文完