編輯:由於某種原因,我的帖子只保存了一部分。我現在已經將其更新為完整內容
儘管本主題圍繞著 Raspberry Pi 展開,但它基本上適用於具有以下設定的所有 SD 卡:檔案系統僅佔卡片總大小的一小部分。簡而言之,這個問題的重點是掌握如何寫作僅有的FS(或更多,如果存在多個分割區)到備份映像。更多詳細資訊請參見下文。
去年 12 月購買 Pi 後,當我開始使用它時,我的 SD 卡出現了幾次損壞,並且丟失了其中的內容。這是由於不正確地關閉電源而不是正常關閉造成的,所以這裡沒什麼大不了的。由於每次我都必須格式化卡片、寫入 Raspbian 映像、將其放入 Pi、啟動開發板、擴充檔案系統、重新安裝和重新配置所有內容,我開始尋找更好的解決方案:
- 調整影像及其上的 FS 的大小前將其寫入SD卡 -這連結完美地說明如何添加映像(使用
dd
並/dev/zero
作為輸入來源)和調整ext4
(我認為它是Raspbian的EXT4(不包括用於啟動組件的FAT32小分割區))。這解決了必須使用擴充檔案系統Raspberry 設定工具的功能基本上會佔用剩餘的未格式化空間,無論是 2GB、4GB、16GB、32GB 等。當然,增加映像也會增加將dd
其寫入 SD 卡所需的時間,但它也允許下一步自訂,即 - 自訂已安裝的軟體 - 使用
chroot
或proot
(加qemu
)是可能的(如所見這裡和這裡)如果您正確安裝了 Raspbian 的 FS 並chroot
在其中安裝/建置您想要的任何內容。對於許多需要交叉編譯的建置(例如 Pi 的 Qt)來說,這也是一個重要的步驟 - 您可以在 Pi 上本地編譯內容,但這需要大量空間和時間。
這基本上就是我定製圖像的方式。這裡的問題是逆向操作所涉及的一組程式 - 獲取 SD 卡的內容並以最佳方式將其儲存在 PC 上。壓縮當然是您可以做的重要事情之一,但這還不夠。使用時dd
您可以將整個SD卡(包括空塊)寫入電腦或選擇您想要的磁區大小和數量。第二種方法可以更好地利用存儲,但需要仔細計算內容。如果你把事情縮短,你可能會得到一個損壞的 FS(哦,我不是已經見過很多次了…)。
我正在尋找一個與以下內容非常相似的解決方案克隆屬優惠 - 您可以克隆只有真正有內容的區塊並因此轉儲其餘部分縮小FS並且能夠在更小的空間內儲存功能齊全的檔案系統。去年我就這麼做了,當時我幫助鄰居將資料保存在 MacBook 上損壞的硬碟上。
範例:如果您安裝了 Raspbian Jessie Lite,則只需大約。您的 SD 卡將使用 1.3GB。現在想像一下如果該卡是 32GB。當然,有時您可能想要格式化並使用剩餘空間,但通常情況並非如此(至少對我來說)。所以如果我dd
盲目使用我基本上會創建一個32GB的圖像檔案。壓縮將處理其中的大部分 GB 位元組,但稍後將其寫入 SD 卡以恢復 Raspbian 的某些先前狀態將是一個非常非常漫長的過程。我還可以複製 FS(再次使用dd
)。但是,如果實際安裝(所有檔案)在該分割區上只佔用 600MB 左右怎麼辦?當我只需要 600MB 時,為什麼要複製 1.3GB?如果我有一個帶有 Raspbian 的 SD 卡,其中使用了配置工具的「擴展檔案系統」功能,並且整個 SD 卡被格式化,即使n
它的 % 實際上正在使用?
有什麼想法如何以盡可能少的努力和修補來實現這一目標?
答案1
轉儲/恢復小 FAT 分區dd
(這是完全需要的),但使用e2image -a
(從e2fsprogs包)為主分區。對於恢復到閃存,該-c
選項似乎很有用(它只會覆蓋目標上真正不同的內容)。
答案2
好吧,雖然沒有直接回答你的問題,但這就是我為輕鬆恢復所做的事情
- 安裝所有必需的軟體包後,將 SD 卡內容新增至檔案
- 以最大壓縮率對檔案進行 bzip 並保留 gzip 壓縮的資料檔案作為備份
- 如果損壞,請使用 dd 還原 Bunzip 後的備份文件