以下是一個不帶分區,直接掛載整個磁盤到指定目錄的腳本。該腳本會檢查磁盤是否已掛載,自動創建文件系統(可選),并配置開機自動掛載:
#!/bin/bash# 磁盤直接掛載腳本(不分區)
# 使用方法: sudo ./mount_disk_raw.sh /dev/sdb /mnt/data ext4 [format]# 參數檢查
if [ $# -lt 2 ]; thenecho "用法: $0 <磁盤設備> <掛載點> [文件系統類型=ext4] [是否格式化=yes/no]"exit 1
fiDISK="$1"
MOUNT_POINT="$2"
FS_TYPE="${3:-ext4}" # 默認使用ext4
FORMAT="${4:-yes}" # 默認格式化磁盤LOG_FILE="/var/log/disk_mount_raw.log"# 日志函數
log() {local message="[$(date '+%Y-%m-%d %H:%M:%S')] $1"echo "$message"echo "$message" >> "$LOG_FILE"
}# 檢查是否為root用戶
if [ "$(id -u)" -ne 0 ]; thenlog "錯誤: 請使用root權限運行此腳本"exit 1
fi# 檢查磁盤設備是否存在
if [ ! -b "$DISK" ]; thenlog "錯誤: 磁盤設備 $DISK 不存在"exit 1
fi# 檢查磁盤是否已掛載
if mount | grep -q "$DISK"; thenlog "警告: 磁盤 $DISK 已掛載"exit 0
fi# 創建掛載點目錄
if [ ! -d "$MOUNT_POINT" ]; thenlog "創建掛載點目錄: $MOUNT_POINT"mkdir -p "$MOUNT_POINT"if [ $? -ne 0 ]; thenlog "錯誤: 無法創建掛載點目錄"exit 1fi
fi# 格式化磁盤(如果需要)
if [ "$FORMAT" = "yes" ]; thenlog "開始格式化磁盤 $DISK 為 $FS_TYPE 文件系統..."case "$FS_TYPE" inext4)mkfs.ext4 -F "$DISK";;xfs)mkfs.xfs -f "$DISK";;btrfs)mkfs.btrfs -f "$DISK";;*)log "錯誤: 不支持的文件系統類型: $FS_TYPE"exit 1;;esacif [ $? -ne 0 ]; thenlog "錯誤: 格式化磁盤失敗"exit 1filog "磁盤格式化完成"
elselog "跳過格式化步驟"
fi# 獲取磁盤UUID
UUID=$(blkid -s UUID -o value "$DISK")
if [ -z "$UUID" ]; thenlog "警告: 無法獲取磁盤UUID,將使用設備路徑掛載"UUID="$DISK"
elselog "獲取到磁盤UUID: $UUID"
fi# 掛載磁盤
log "嘗試掛載 $DISK 到 $MOUNT_POINT"
mount -t "$FS_TYPE" "$DISK" "$MOUNT_POINT"if [ $? -eq 0 ]; thenlog "掛載成功: $DISK -> $MOUNT_POINT"# 添加到fstab實現開機自動掛載FSTAB_ENTRY="UUID=$UUID $MOUNT_POINT $FS_TYPE defaults 0 0"if ! grep -q "$MOUNT_POINT" /etc/fstab; thenecho "$FSTAB_ENTRY" >> /etc/fstablog "已添加到 /etc/fstab"elselog "警告: /etc/fstab 中已存在 $MOUNT_POINT 的掛載記錄"log "請手動檢查 /etc/fstab 是否需要更新"fi
elselog "錯誤: 掛載失敗"exit 1
fi# 驗證掛載
log "掛載結果:"
df -h | grep "$MOUNT_POINT"
使用說明:
-
基本用法(格式化并掛載):
sudo ./mount_disk_raw.sh /dev/sdb /mnt/data ext4
-
不格式化直接掛載(適用于已格式化的磁盤):
sudo ./mount_disk_raw.sh /dev/sdb /mnt/data ext4 no
-
指定其他文件系統(如XFS):
sudo ./mount_disk_raw.sh /dev/sdb /mnt/data xfs
腳本功能:
- 自動檢測磁盤是否存在和已掛載
- 支持多種文件系統(ext4、xfs、btrfs)
- 可選格式化磁盤
- 使用UUID而非設備路徑配置
/etc/fstab
(更可靠) - 詳細的日志記錄(/var/log/disk_mount_raw.log)
- 完整的錯誤處理
注意事項:
- 數據安全:格式化會清除磁盤上的所有數據,請確保已備份重要數據
- 權限要求:必須使用root權限運行
- 生產環境:建議先在測試環境驗證腳本行為
- 文件系統選擇:根據實際需求選擇ext4或XFS(參考上一輪對話的對比)