Mount

如何創建分區 (ext4) 的映像,然後將其掛載以瀏覽/恢復文件?

  • September 12, 2019

我想備份我目前的 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-imgqemu-nbdqemu-utils包裝中。順便說一句,如果您拍攝整個磁碟的映像而不僅僅是一個分區,您可以將舊系統作為新系統中的虛擬機執行。


另一種選擇是安裝第二張磁碟並在其上安裝 Debian 10。然後,您可以將舊驅動器安裝在新系統上的某個位置。甚至是 Debian 9 和 Debian 10 之間的雙引導。


就個人而言,我會推荐一個文件副本(例如使用tarorrsync甚至cp -a)而不是圖像備份。它更有用,可以輕鬆提取到您想要的任何地方,並且不會浪費空間或時間來複製空白或未使用的扇區。

映像備份(幾乎總是)是備份文件系統的最差方法。

e2image可用於創建 ext4 文件系統的映像,同時僅複製正在使用的扇區:

e2image -ra /dev/sda1 /path/to/file.img

file.img將被創建為稀疏文件,因此它只會佔用文件系統中真正使用的空間,即使它的外觀大小會反映文件系統的容量。

您還可以使用e2image生成 QCOW2 圖像:

e2image -Qa /dev/sda1 /path/to/file.qcow2

這將產生一個仍然可以掛載的緊湊文件。

兩個圖像都可以壓縮,儘管這會導致文件無法直接掛載。

引用自:https://unix.stackexchange.com/questions/541405