orange pi 3 emmc備份實踐

opi3 emmc系統備份實踐

背景描述

opi3我燒寫的是armbian系統,這個系統有個很好用的工具armbian-config,可以通過它實現將sd卡系統燒寫到emmc上。本質上是調用

nand-sata-install

這樣一段腳本。這個腳本實現了將sd卡系統搬遷到emmc並建立分區。這個指令相對挺高效的。
但實際生產中,我在這臺機器上開發好的程序,安裝的更新等等需要遷移到另一塊相同的板卡上。(類似於小批量樣機)這時我應該怎麼做呢?直接的辦法是將這塊的emmc直接拷貝到另一塊上。(猜想借助sd卡上的系統,通過rsync將這個機器上的拷貝到另一臺機器的emmc上應該是可行的。但我沒有實踐。)

思路

問題有了,可以歸納成一句話:如果歸檔和恢復emmc上的系統?
歸檔或者備份系統又多個方法。一個是用比emmc大的sd卡,將emmc上的文件全盤拷貝過來。不用製作壓縮成image文件。是整個磁盤拷貝,這就意味這將啓動目錄也拷貝進來。理論上應該可以直接從這個磁盤啓動的。
另一個方法是將系統壓縮成鏡像,在需要的使用鏡像製作工具將鏡像先燒到sd卡中,然後再用nand-sata-install工具將系統克隆到emmc中。
這兩種方法無所謂優劣:前者適合立刻使用,減少重新制作鏡像的環節。後者適合長期保存。

實現

我並非linux高手,沒有系統研究過常用的工具。通過搜多瞭解到最常用的方案是使用dd指令。另外需要安裝fdisk工具來輔助查看當前的磁盤名稱。
1、原始linux板卡,系統運行在emmc上。我的opi3是8Gemmc,我手邊剛好又一個16G SD卡。
2、啓動系統並插入SD卡。使用sudo fdisk -l來查看磁盤分佈。我的emmc在blk1上,sd在mmcblk2上。當然前者此時是兩個分區mmcblk1p1和mmcblkp2.(你的可能還有mmcblk0)以自己的爲主。據說dd指令有可能將你自己的系統也幹掉,所以安全器件一定要檢查好磁盤名稱,並確保敲命令之後檢查一下。
dd -if =原始磁盤 -of=存儲磁盤 bs = 扇區大小 [有些人會加上-count = 總共拷貝的扇區數目+1] .
我沒有使用-count.bs可以在fdisk的地方看到,count實際上也可以。這裏不再贅述。

dd  -if =  /dev/mmcblk1       -of = /dev/mmcblk2  bs=512
             替換成你的emmc         替換成你的SD卡

3、dd命令確認之後,沒有任何提示。你需要等待一段時間,視磁盤大小和傳輸速率。而定。結束之後會提示你。一定要耐心等待。
4、將做好的sd卡插到新的目標板上,opi3系統自動從sd啓動的。然後確認一下系統是不是新的。應該沒問題。然後再找到armbian-config或者直接nada-sata-install安裝即可。

擴展

上面的方法對應思路一。思路二還是使用dd,不過上面的命令就換成了:

dd  -if =  /dev/mmcblk1|gzip -c       -of = /dev/mmcblk2  bs=512
             替換成你的emmc                 替換成你的SD卡

同時增加一個使用etcher等工具製作鏡像的過程。

這個思路我暫時沒有測試過。可以作爲你嘗試的起點。

結論

dd方法很強大,很適合樹莓派,opi等的使用。但對於電腦系統備份,還需要對系統進行壓縮等操作。需要使用其它方式結合dd指令或者別的工具來實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章