温馨提示×

ubuntu分卷能自动化吗

小樊
39
2025-12-10 07:19:40
栏目: 智能运维

可以实现自动化分卷

在 Ubuntu 中,“分卷”既可能指对磁盘进行分区,也可能指对大文件做分卷压缩。两类场景都可以用脚本实现自动化,下面给出可直接复用的做法与注意点。

磁盘分区自动化

  • 使用命令行工具如 parted/fdisk 编写脚本即可完成全自动分区、格式化与挂载。示例流程:
    • 查看磁盘与可用空间:lsblksudo fdisk -l
    • 使用 parted 创建分区(示例:从 1MiB10GiB 的主分区)
      sudo parted /dev/sdX mklabel gpt
      sudo parted /dev/sdX mkpart primary ext4 1MiB 10GiB
      sudo parted /dev/sdX print
      
    • 格式化并挂载
      sudo mkfs.ext4 /dev/sdX1
      sudo mkdir -p /mnt/data
      sudo mount /dev/sdX1 /mnt/data
      
    • 如需开机自动挂载,获取分区 UUIDsudo blkid /dev/sdX1,写入 /etc/fstab
      UUID=<你的UUID>  /mnt/data  ext4  defaults  0  2
      
    • 也可用 fdisk 交互式创建分区(n 新建、w 写入),适合更灵活的脚本编排。以上工具与步骤均为 Ubuntu 常用分区方式,适合做成无人值守脚本执行。

LVM 自动化

  • 对于需要后续灵活扩容缩容的场景,使用 LVM 更容易做成自动化:
    sudo apt update && sudo apt install -y lvm2
    sudo pvcreate /dev/sdX
    sudo vgcreate vg_data /dev/sdX
    sudo lvcreate -L 100G -n lv_data vg_data
    sudo mkfs.ext4 /dev/vg_data/lv_data
    sudo mkdir -p /mnt/data
    sudo mount /dev/vg_data/lv_data /mnt/data
    # 自动挂载
    echo 'UUID='$(sudo blkid -s UUID -o value /dev/vg_data/lv_data)' /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
    
    • LVM 的优势是后续可在线扩容逻辑卷,再调整文件系统即可,便于做成标准化部署脚本。

大文件分卷压缩自动化

  • 若你的“分卷”指把大文件/目录切成多个压缩包,可用 tar + split 全自动处理:
    • 直接对目录分卷(每卷 10G
      tar cvzpf - myfolder | split -d -b 10G - myfolder.tar.gz.
      
    • 先压缩再分卷(通常更高效)
      tar -jcvf myfolder.tar.bz2 myfolder/
      tar cvzpf - myfolder.tar.bz2 | split -d -b 10G - myfolder.tar.bz2.
      
    • 合并与解压
      cat myfolder.tar.gz.* > myfolder.tar.gz
      tar -zxvf myfolder.tar.gz
      # 若先用了 .bz2,则:tar -jxvf myfolder.tar.bz2
      
    • 注意:分卷压缩/拷贝若不完整,解压会出现 gzip stdin invalid 等错误,需重新分卷或补齐分卷后再解压。

安全与幂等建议

  • 分区与 LVM 操作会改写磁盘结构,务必先备份重要数据;执行前用 lsblksudo fdisk -lsudo parted /dev/sdX print 确认目标磁盘与分区号,避免误写。
  • 脚本中加入幂等判断:如检测分区是否存在、是否已挂载、UUID 是否已写入 /etc/fstab,必要时先 umountwipefs 或跳过已完成的步骤。
  • 在云盘/虚拟机环境中,优先在维护窗口操作,并确保有控制台/救援通道,防止误操作导致系统不可达。

0