Content is user-generated and unverified.
#!/bin/bash # Debian 系统迁移脚本 - 使用 Btrfs + ZSTD 压缩 # 用法: bash migrate_debian.sh set -e echo "源磁盘: /dev/sda1 (Debian系统)" echo "目标磁盘: /dev/vda" echo "" read -p "确认开始迁移?(yes/no): " confirm [[ "$confirm" != "yes" ]] && exit 1 # 检查工具 for cmd in btrfs parted rsync mkfs.vfat; do if ! command -v $cmd &> /dev/null; then apt-get update && apt-get install -y btrfs-progs parted rsync dosfstools break fi done # 创建分区 echo "创建分区..." parted -s /dev/vda mklabel gpt parted -s /dev/vda mkpart primary fat32 1MiB 101MiB parted -s /dev/vda set 1 esp on parted -s /dev/vda mkpart primary btrfs 101MiB 100% # 格式化 echo "格式化分区..." mkfs.vfat -F32 -n "DEBIAN-EFI" /dev/vda1 mkfs.btrfs -f -L "DEBIAN-ROOT" -m single -d single /dev/vda2 # 挂载 echo "挂载分区..." mkdir -p /mnt/{old,new} mount /dev/sda1 /mnt/old mkdir -p /mnt/old/boot/efi mount /dev/sda15 /mnt/old/boot/efi mount -o compress-force=zstd:1 /dev/vda2 /mnt/new mkdir -p /mnt/new/boot/efi mount /dev/vda1 /mnt/new/boot/efi # 复制文件 echo "复制系统文件..." rsync -aAXHv --info=progress2 \ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/swapfile","*.log","*~","/var/cache/*","/var/tmp/*"} \ /mnt/old/ /mnt/new/ # 创建系统目录 mkdir -p /mnt/new/{dev,proc,sys,tmp,run,mnt,media} chmod 1777 /mnt/new/tmp # 更新 fstab echo "更新 fstab..." NEW_ROOT_UUID=$(blkid -s UUID -o value /dev/vda2) NEW_EFI_UUID=$(blkid -s UUID -o value /dev/vda1) cat > /mnt/new/etc/fstab << EOF UUID=${NEW_ROOT_UUID} / btrfs defaults,compress-force=zstd:1,noatime 0 0 UUID=${NEW_EFI_UUID} /boot/efi vfat umask=0077 0 2 EOF # 准备 chroot mount --bind /dev /mnt/new/dev mount --bind /proc /mnt/new/proc mount --bind /sys /mnt/new/sys mount --bind /dev/pts /mnt/new/dev/pts # 安装 GRUB echo "安装 GRUB..." chroot /mnt/new /bin/bash -c " grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck /dev/vda update-grub " # 显示空间使用 echo "" df -h /mnt/new # 卸载 echo "" echo "卸载文件系统..." sync umount /mnt/new/dev/pts umount /mnt/new/dev umount /mnt/new/proc umount /mnt/new/sys umount /mnt/new/boot/efi umount /mnt/new umount /mnt/old/boot/efi umount /mnt/old echo "" echo "迁移完成。重启后从 /dev/vda 启动。"
Content is user-generated and unverified.
    Debian System Migration Script: 9.3GB to 1GB with Btrfs ZSTD | Claude