Linux分區數據遷移的完整流程與注意事項
tar
(sudo tar -czvf backup.tar.gz /source/path
)或rsync
(sudo rsync -avh /source/path/ /backup/path/
)創建源數據的完整備份,確保數據安全。/dev/sdb1
)有足夠空間(可通過df -h
查看源分區使用量,lsblk
查看目標分區大?。?,并已格式化為兼容文件系統(如ext4
、xfs
)。Clonezilla
或dd
;目錄遷移推薦rsync
;小范圍調整推薦cp
),并在Live CD/USB環境下操作(避免影響正在運行的系統)。工具:dd
命令
適用于源與目標分區大小一致或目標更大的情況,逐塊復制分區內容(包括分區表、引導記錄、文件系統)。
命令示例:
sudo dd if=/dev/sda1 of=/dev/sdb1 bs=4M status=progress
if
:源分區(如/dev/sda1
,系統根分區);of
:目標分區(如/dev/sdb1
,新硬盤分區);bs
:塊大?。ńㄗh4M
,提升復制速度);status=progress
:顯示復制進度。工具:Clonezilla
(圖形化工具)
更安全、易操作,支持增量克隆、壓縮與校驗。
操作步驟:
/dev/sda
)與目標磁盤(如/dev/sdb
);/home
、/usr
)工具:rsync
(推薦)
保留文件權限、時間戳、硬鏈接等屬性,支持斷點續傳,適合大目錄遷移。
命令示例:
sudo rsync -avh --progress /mnt/old_home/ /mnt/new_home/
-a
:歸檔模式(保留所有屬性);-v
:詳細輸出;--progress
:顯示傳輸進度。工具:cp
命令(簡單場景)
遞歸復制目錄,保留基本屬性(如權限、時間戳)。
命令示例:
sudo cp -a /mnt/old_home/. /mnt/new_home/
-a
:等同于-dR --preserve=all
(保留所有屬性)。/
分區,新增/home
)/dev/sda1
):sudo e2fsck -f /dev/sda1 # 檢查文件系統
sudo resize2fs /dev/sda1 9G # 縮小文件系統到9G(比目標分區小1G)
sudo fdisk /dev/sda # 刪除原分區,重新創建更小的分區
/dev/sda2
,用于/home
),格式化(mkfs.ext4 /dev/sda2
);rsync
復制/mnt/old_root/home/
到/mnt/new_home/
);/etc/fstab
:將新分區的UUID(通過blkid
獲?。┨砑拥?code>/etc/fstab,確保開機自動掛載。驗證數據完整性:
使用diff
命令遞歸比較源與目標目錄,無輸出則表示一致:
sudo diff -r /mnt/old_path/ /mnt/new_path/
或使用rsync
的--checksum
選項(更嚴格,但耗時):
sudo rsync -avh --checksum /mnt/old_path/ /mnt/new_path/
```。
更新引導配置(系統盤遷移必做):
/etc/fstab
(目標分區UUID可通過blkid /dev/sdb1
獲?。?pre class="hljs">sudo vim /mnt/new_root/etc/fstab
將原UUID替換為新UUID。sudo mount /dev/sdb1 /mnt/new_root # 掛載新根分區
sudo mount /dev/sdb2 /mnt/new_root/boot # 掛載新boot分區(若有)
sudo chroot /mnt/new_root # 切換到新系統環境
sudo grub-install /dev/sdb # 安裝GRUB到新硬盤
sudo update-grub # 更新GRUB配置
exit # 退出chroot
```。
清理源數據:
確認遷移無誤后,刪除源分區數據(如sudo rm -rf /mnt/old_path
),釋放空間。
umount
卸載,若提示“target is busy”,用lsof /path
查找并結束占用進程)。/etc/fstab
或GRUB配置,避免啟動沖突。ddrescue
(sudo ddrescue /dev/sda /dev/sdb rescue.log
)替代dd
,提高克隆成功率。