Linux Minimal 系统迁移实操指南
一 场景与准备
cat /etc/issue、uname -r、lsblk -f、blkid、efibootmgr。二 方法一 文件级迁移 rsync(通用、可增量)
sudo mkdir -p /mnt/backup
sudo mount /dev/sdX1 /mnt/backup
sudo rsync -aAXhv --info=progress2 \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
/* /mnt/backup/
sudo gparted
sudo mkfs.ext4 /dev/sda1
# UEFI 示例:sudo mkfs.fat -F32 /dev/sda2
sudo mount /dev/sda1 /mnt
# UEFI 示例:sudo mkdir -p /mnt/boot/efi && sudo mount /dev/sda2 /mnt/boot/efi
sudo rsync -aAXhv --info=progress2 /外部介质路径/ /mnt/
sudo mkdir -p /mnt/{proc,sys,dev,run,tmp}
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
# BIOS
grub-install /dev/sda
update-grub
# UEFI
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
update-grub
update-initramfs -u
exit
sudo blkid
sudo nano /mnt/etc/fstab # 将根分区与 /boot/efi 的 UUID 改为新盘实际值
三 方法二 归档迁移 tar 或 bsdtar(打包后一次性恢复)
sudo tar -cvpzf /mnt/backup/backup.tar.gz \
--exclude=/mnt/backup --exclude=/home/*/.cache --exclude=/var/cache \
--one-file-system /
sudo mount /dev/sda1 /mnt
# UEFI 示例:sudo mkdir -p /mnt/boot/efi && sudo mount /dev/sda2 /mnt/boot/efi
# 使用 GNU tar
sudo tar -xvpzf /外部介质/backup.tar.gz -C /mnt --numeric-owner
# 或使用 bsdtar(同样支持 --numeric-owner)
# sudo bsdtar -xpf /外部介质/backup.tar.gz -C /mnt --numeric-owner
# 准备 chroot 并修复引导(同方法一)
sudo mkdir -p /mnt/{proc,sys,dev,run,tmp}
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda && update-grub # BIOS
# 或 UEFI:grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB && update-grub
update-initramfs -u
exit
# 修正 /etc/fstab 的 UUID
sudo blkid
sudo nano /mnt/etc/fstab
四 方法三 整盘克隆 dd(最快,但要求目标盘容量≥源盘)
sfdisk -d /dev/sda | sfdisk /dev/sdb 复制分区表),再克隆:sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
五 验证与常见问题处理
ping、ip a)。mount | grep '^/dev',确认 根分区 与 /boot/efi 挂载正确。journalctl -xe、dmesg | tail,定位驱动或挂载失败原因。grub-install /dev/sda;UEFI:grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB),再 update-grub。blkid 确认新盘 UUID,修正 /etc/fstab 中的根与 /boot/efi 条目。update-initramfs -u;必要时安装对应 存储/显卡 驱动并重启。/etc/netplan/*.yaml(Ubuntu)或 /etc/sysconfig/network-scripts/ifcfg-*、/etc/udev/rules.d/70-persistent-net.rules(RHEL/CentOS 系),再重启网络服务。