如何創建分區 (ext4) 的映像,然後將其掛載以瀏覽/恢復文件?
我想備份我目前的 Debian 9 伺服器作業系統分區,以便我可以安裝 Debian 10 的干淨版本。
但是,在安裝 Debian 10 之後,我想掛載我的舊作業系統映像,以便可以根據需要瀏覽和恢復文件。
我以為我會使用 CloneZilla,但顯然你不能直接掛載它創建的圖像?
以root 身份,
cat
將分區轉移到另一個分區:cat /dev/sdXn > /dev/sdYi
或文件:
cat /dev/sdXn > backup.img
或者到另一台機器上的文件或分區:
cat /dev/sdXn | ssh user@host 'cat > backup.img'
您可以使用
dd
而不是cat
,但沒有充分的理由這樣做:dd if=/dev/sdXn of=backup.img
或者,如果您在複製時想要一個進度條和/或控制在複製期間使用多少緩衝,您可以使用
pv
:pv /dev/sdXn > backup.img
如果分區有讀取錯誤,您可能希望使用
ddrescue
而不是cat
:ddrescue /dev/sdXn /dev/sdYi
或者
ddrescue /dev/sdXn backup.img
ddrescue
不會寫入標準輸出(或從標準輸入讀取),所以如果你想backup.img
在另一台機器上這樣做,你必須在scp
之後複製它(例如使用 ),或者將它寫入 NFS 掛載。或者,正如 user1133275 在評論中提到的,您可以使用程序替換:
ddrescue /dev/sdXn >(ssh user@host 'cat > backup.img')
最後,如果你想要一個壓縮的、可掛載的文件系統,你可以使用
qemu-img
:qemu-img convert -c -O qcow2 /dev/sdXn backup.qcow2
要安裝它:
qemu-nbd --connect=/dev/nbd0 /path/to/backup.qcow2 mount /dev/nbd0 /mnt
兩者
qemu-img
都qemu-nbd
在qemu-utils
包裝中。順便說一句,如果您拍攝整個磁碟的映像而不僅僅是一個分區,您可以將舊系統作為新系統中的虛擬機執行。另一種選擇是安裝第二張磁碟並在其上安裝 Debian 10。然後,您可以將舊驅動器安裝在新系統上的某個位置。甚至是 Debian 9 和 Debian 10 之間的雙引導。
就個人而言,我會推荐一個文件副本(例如使用
tar
orrsync
甚至cp -a
)而不是圖像備份。它更有用,可以輕鬆提取到您想要的任何地方,並且不會浪費空間或時間來複製空白或未使用的扇區。映像備份(幾乎總是)是備份文件系統的最差方法。
e2image
可用於創建 ext4 文件系統的映像,同時僅複製正在使用的扇區:e2image -ra /dev/sda1 /path/to/file.img
file.img
將被創建為稀疏文件,因此它只會佔用文件系統中真正使用的空間,即使它的外觀大小會反映文件系統的容量。您還可以使用
e2image
生成 QCOW2 圖像:e2image -Qa /dev/sda1 /path/to/file.qcow2
這將產生一個仍然可以掛載的緊湊文件。
兩個圖像都可以壓縮,儘管這會導致文件無法直接掛載。