Dd

將整個分區或硬碟複製到稀疏文件

  • March 19, 2022

我喜歡將整個分區或整個硬碟驅動器複製到更大的外部磁碟上,但喜歡創建稀疏文件。我經常dd用於複製,但它不支持稀疏文件。作為一種解決方法,我使用了類似的東西:

cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw

但是,這對我的口味來說有點太棘手了,如果中止,我將無法恢復該過程。有趣的是,有一個 NTFS 工具來解決這個問題ntfsclone

有沒有更好的工具,例如dd支持稀疏的變體?我不尋找一些用於磁碟備份的專有軟體,而只是想製作一個稀疏複製副本,如果需要,我可以將其掛載為循環設備。

你想要dd_rescue

dd_rescue -a -b 8M /dev/sda1 /mount/external/backup/sda1.raw

可隨時中斷複製Ctrl-C,顯示目前位置。-s當通過添加和位置到原始命令重新啟動時,可以使用此值,例如

dd_rescue -a -b 8M -s 42000k /dev/sda1 /mount/external/backup/sda1.raw

更容易的是指定第三個文件名,它作為一個日誌文件。重新啟動dd_rescue時將讀取該日誌文件並從中斷處繼續。

只是為了完整起見,呼叫ddrescue--sparseor-S標誌允許稀疏地寫入目標:

$ ddrescue -S -b8M /dev/sda1 /mount/external/backup/sda1.raw

或長選項:

$ ddrescue --sparse --block-size 8M /dev/sda1 /mount/external/backup/sda1.raw

或者,如果您更喜歡MiB

$ ddrescue -S -b8Mi /dev/sda1 /mount/external/backup/sda1.raw

要允許救援被中斷和恢復,您還可以使用日誌文件:

$ ddrescue -S -b8Mi /dev/sda1 /mount/external/backup/sda1.raw ~/sda1.rescue.log

注意 GNUddrescuedd_rescue是不同的程序。但 GNUddrescue似乎更普遍。例如,它已經與GRML打包在一起。

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