tar命令备份个人配置与数据(排除临时文件、缓存等),例如备份/home、/etc、/var目录:sudo tar -czvf backup.tar.gz --exclude={'/home/*/.cache','/tmp','/proc','/sys'} /home /etc /var
记录已安装软件包列表(便于新系统恢复):sudo dpkg --get-selections > packagelist.txt
lsblk查看磁盘容量);sudo systemctl enable --now ssh)。rsync命令将原系统文件同步到目标目录(如/mnt/new_root),跳过虚拟文件系统(/dev、/proc等):sudo rsync -aAXv --exclude={'/dev/*','/proc/*','/sys/*','/tmp/*','/run/*','/mnt/*','/media/*','/lost+found'} / /mnt/new_root/
sudo rsync -aAXv -e ssh user@旧电脑IP:/ /mnt/new_root/
sudo dpkg --set-selections < packagelist.txt
sudo apt-get update && sudo apt-get -u dselect-upgrade
dd或Clonezilla将原系统写入外接硬盘(需外接硬盘容量≥原系统已用空间):sudo dd if=/dev/sda of=/mnt/external_disk/backup.img bs=4M status=progress
(注:dd会复制所有数据,包括空闲空间,建议优先使用Clonezilla图形化操作,更安全。)sudo dd if=/mnt/external_disk/backup.img of=/dev/sda bs=4M status=progress
或使用Clonezilla的“device-image”模式选择源镜像与目标硬盘。sudo mkdir /mnt/old_disk
sudo mount /dev/sdb1 /mnt/old_disk # 假设旧硬盘为/dev/sdb1
修复引导与分区:
sudo update-grub
sudo grub-install /dev/sda # /dev/sda为新硬盘设备名
parted扩展分区(如/dev/sda1):sudo parted /dev/sda
(parted) resizepart 1 100% # 将分区扩展至100%
(parted) quit
使用resize2fs扩展文件系统:sudo resize2fs /dev/sda1
dd克隆,需修改新分区UUID以避免冲突):sudo blkid
修改/etc/fstab中的UUID(替换为blkid获取的新UUID):sudo nano /mnt/new_root/etc/fstab
保存后退出。验证系统完整性:
df -h(确认新分区已正确挂载);systemctl list-units --type=service(确认关键服务如SSH、网络正常运行)。chroot修复:sudo mount /dev/sda1 /mnt
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
exit
rsync时加-A参数保留ACL权限;若遇文件属主错误,执行:sudo chown -R $USER:$USER /home/$USER